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.为什么你没有返回一些垃圾值?
根据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)