gpt4 book ai didi

c - 浮点常量比较 - (0.0 ? 1 : 0)

转载 作者:可可西里 更新时间:2023-11-01 12:35:32 25 4
gpt4 key购买 nike

在下面的示例中,如果取消注释 float f = 0.0;
并将 return(0.0 ? 1 : 0); 替换为 return(f ? 1 : 0);
输出为 NIL

这是我的代码:

/* file main.c 
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
cl -W4 -MTd -O2 -TC main.c -Fetest */
#include <stdio.h>
int my_func(void)
{
/* float f = 0.0; */
return(0.0 ? 1 : 0);
}
int main(void)
{
printf("%s\n", ( my_func() ? "ONE" : "NIL") );
return 0;
}

在 32 位 Windows 机器上,使用 Visual Studio 此代码输出:

ONE
  • 为什么 my_func() 返回值 true (1)?
  • C 编译器如何解释这个表达式 (0.0 ? 1 : 0)

最佳答案

这看起来像是 Microsoft 编译器中的错误,您应该提交给 Connect .我能够在 Visual Studio Express 2010 中复制它,但不能在 gcc 中复制:http://ideone.com/8qPRJd .

任何计算为整数值 0 的表达式都应等同于 false。这正是它使用 float 变量的方式,当我尝试使用 double 时也是如此。

关于c - 浮点常量比较 - (0.0 ? 1 : 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18008126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com