为什么输出y,0.000?

Ali*_*san -5 c initialization operators type-conversion

#include <stdio.h>

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

如果x<10输出是1.0000?

我的尝试

所以x是3并且x<10是真实的返回1.00并且x>10是假返回0.00但仍然为什么浮动表现得像bool.为什么你没有返回一些垃圾值?

Vla*_*cow 5

根据C标准(6.5.8关系运算符)

6如果指定的关系为真,则每个运算符<(小于),>(大于),<=(小于或等于)和> =(大于或等于)将产生1,如果指定的关系为0则为0是false.107)结果的类型为int

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

实际上,您可以考虑此代码段

int x = 3;
float y = x>10;
Run Code Online (Sandbox Code Playgroud)

喜欢

int temporary = 0; // x > 10
float y = temporary;
Run Code Online (Sandbox Code Playgroud)