【问题标题】:Why is the output of y , 0.000? [closed]为什么 y 的输出是 0.000? [关闭]
【发布时间】:2017-11-20 02:24:51
【问题描述】:
#include <stdio.h>

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

如果x&lt;10 的输出为 1.0000?

我的尝试

所以 x 为 3,x&lt;10 为真返回 1.00,x&gt;10 为假返回 0.00,但为什么 float 表现得像 bool。为什么 y 不返回一些垃圾值?

【问题讨论】:

  • "为什么 y 不返回一些垃圾值?" - 为什么要这样?并请提供对定义“垃圾价值”的标准的参考。那是什么?
  • @UnholySheep:C 很好地有一个 boolean 类型:_Bool 并提供了一个定义宏 bool 的标头。
  • 当然输出是"1.000000" 而不是"1.0000"。真正的转录对于解决问题通常很重要。

标签: c initialization type-conversion operators


【解决方案1】:

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

6 每个运算符 (大于)、=(大于或等于)如果 指定的关系为真,如果为假,则为 0。107) 结果有 输入整数

将整数值分配给浮点类型的对象是一个定义明确的操作。

其实你可以考虑这段代码sn-p

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

喜欢

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

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 2018-09-19
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多