[英]Floating Point Arithmetic, C output
对于f的值,输出将是“世界”?
#include<stdio.h>
int main(){
float f= ... ;
if(f==f)
printf("hello\n");
else
printf("world\n");
return 0;
}
什么将被三个点取代(...)
尝试这个:
#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;
}
简单。
float f = (puts("world"), exit(0), 0.0f);
编辑:是的,我知道你正在寻找一个不同的答案。 但是我会变得很可爱,因为这看起来像是家庭作业或带回家测验的问题,甚至还没有分解成它的部分。
IEEE 754浮点数可以表示正或负infinity
和NaN
(不是数字)。 这3个值来自计算,其结果未定义或无法准确表示。 NaN
将始终通过表达式传播。 即任何含有NaN
表达都会评估NaN
。
您还可以故意将浮点变量设置为NaN
。 例如,以下完全有效的浮点表达式将起到作用:
sqrtf(-1.0f) // NaN
有关浮点数的无穷大和NaN的更多信息。
PS:我很想忽略这一点,因为它看起来像是一个简单的作业Q.但是家庭作业标签被弃用了所有......
您可以使用math.h
的NAN
宏。
#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,则不存在此宏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.