2017-06-17 70 views
-5
#include <stdio.h> 

int main() 
{ 
    int x = 3; 
    float y = x>10; 
    printf("y is %f",y); 
} 

另外如果x<10的輸出是1.0000?爲什麼y的輸出是0.000?

我嘗試

所以x是3個x<10是真實收益1.00和x>10是虛假申報,0.00,但仍爲什麼浮動像個布爾。爲什麼y不返回一些垃圾值?

+4

「爲什麼Ÿ沒有返回一些垃圾的價值?」 - 爲什麼要這樣?並請提供一個關於定義「垃圾值」的標準。那是什麼? – Olaf

+0

@UnholySheep:C很好有一個** bool ** ean類型:'_Bool'並提供一個定義宏'bool'的頭文件。 – Olaf

+0

當然輸出是「1.000000」而不是「1.0000」。真正的轉錄對於解決問題通常很重要。 – chux

回答

5

按照C標準(6.5.8關係運算符)

6每個運營商<的(小於),>(大於),< =(小於或 等於),和> =(大於或等於)應得到1,如果 指定關係爲真和0,如果它是false.107)結果具有 int類型

分配一個整數值到鄰float類型的對象是一個明確定義的操作。

事實上,你可以考慮此代碼段

int x = 3; 
float y = x>10; 

int temporary = 0; // x > 10 
float y = temporary;