为什么输出y,0.000?

时间:2017-06-17 11:19:55

标签: c initialization type-conversion operators

#include <stdio.h>

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

如果x<10输出为1.0000?

我的尝试

因此x为3且x<10为真,返回1.00而x>10为false返回0.00但仍然为什么浮动的行为类似于bool。为什么你没有返回一些垃圾值?

1 个答案:

答案 0 :(得分:5)

根据C标准(6.5.8关系运营商)

  

6每个运营商&lt; (小于),&gt; (大于),&lt; =(小于   或者等于),并且&gt; =(大于或等于)如果是,则产生1   指定的关系为true,如果为false,则为0 .107)结果为   输入int

为float类型的对象赋值是一个定义良好的操作。

实际上你可以考虑这段代码

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

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