其中f的值,输出将是“世界”?浮点运算,C输出
#include<stdio.h>
int main(){
float f= ... ;
if(f==f)
printf("hello\n");
else
printf("world\n");
return 0;
}
什么都会有三个点(...)
其中f的值,输出将是“世界”?浮点运算,C输出
#include<stdio.h>
int main(){
float f= ... ;
if(f==f)
printf("hello\n");
else
printf("world\n");
return 0;
}
什么都会有三个点(...)
易于更换。
float f = (puts("world"), exit(0), 0.0f);
编辑:是的,我知道你正在寻找一个不同的答案。但我会变得可爱,因为这看起来像一个家庭作业或家庭测验的问题,甚至没有被分解成它的部分。
只有一些算术价值...你可以建议一个? –
啊! @Dietrich Epp。你揍我2秒! :-) – TheCodeArtist
尝试这种情况:
#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;
}
这可能是OP正在寻找的东西。 – Kirby
+1:来自/审查提供此答案。 –
IEEE 754浮点数可以表示正或负infinity
和NaN
(非数字)。这3个值来自计算结果未定义或无法准确表示的结果。 NaN
将总是通过表达式传播。即任何含有NaN
的表达将评估NaN
。
您还可以故意将浮点变量设置为NaN
。例如,下面的完全有效的浮点表达式会做的伎俩:在infinity and NaN in floating point numbers
sqrtf(-1.0f) // NaN
更多信息。
PS:我很想忽略这个,因为它看起来像一个简单的功课问:但是,随着功课的标签已被弃用,所有...
公平地说,它也可能是一个面试问题。 :) – cHao
:) :) @cHao我希望他能得到这份工作;-) ;-) – TheCodeArtist
无限相比,本身就会产生真实,就像任何普通数字一样。唯一没有做到这一点的是NaN。另外,你关于无限的陈述并不是真的,因为有些情况下无限输入会产生NaN。 – Lindydancer
可以使用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引入不存在,如果实现不支持无提示NaN为float
类型。
f = 1.0f/0.0f;例如 – Listing
不使用任何函数或任何技巧...请建议我一些算术值,这是浮动。 –
@Rahul:你已经有了下面的5个。 :) – cHao