2017-06-17 72 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;