对于f的值,输出将是“世界”?
#include<stdio.h>
int main(){
float f= ... ;
if(f==f)
printf("hello\n");
else
printf("world\n");
return 0;
}
什么将被三个点(...)替换
答案 0 :(得分:4)
试试这个:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
float f = nanf("0.0");
printf("%f\n", f);
if(f==f)
printf("hello\n");
else
printf("world\n");
return 0;
}
答案 1 :(得分:2)
易。
float f = (puts("world"), exit(0), 0.0f);
修改:是的,我知道您正在寻找不同的答案。但是我会变得很可爱,因为这看起来像是家庭作业或带回家测验的问题,甚至还没有被分解成部分。
答案 2 :(得分:2)
IEEE 754浮点数可以表示正数或负数infinity
和NaN
(不是数字)。这3个值来自计算,其结果未定义或无法准确表示。 NaN
将始终通过表达式传播。即包含NaN
的任何表达式评估NaN
。
您还可以故意将浮点变量设置为NaN
。例如,以下完全有效的浮点表达式可以解决这个问题:
sqrtf(-1.0f) // NaN
有关infinity and NaN in floating point numbers的更多信息。
答案 3 :(得分:0)
您可以使用NAN
中的math.h
宏。
#include <math.h>
#include <stdio.h>
int main(void)
{
float f = NAN;
if (f == f)
printf("hello\n");
else
printf("world\n");
}
请注意,此宏已在C99中引入,如果实现不支持float
类型的安静NaN,则该宏不存在。