C++ 浮点运算,C输出

C++ 浮点运算,C输出,c++,c,floating-point,C++,C,Floating Point,对于哪个值的f,输出将是“世界” #包括 int main(){ 浮动f=; 如果(f==f) printf(“hello\n”); 其他的 printf(“世界”); 返回0; } 将被三个点(…)替换的内容很简单 float f = (puts("world"), exit(0), 0.0f); 编辑:是的,我知道你在寻找不同的答案。但我要表现得可爱一点,因为这看起来像是一个家庭作业或带回家的测验中的问题,甚至没有被分解成几个部分。试试这个: #include<stdio.h>

对于哪个值的f,输出将是“世界”

#包括
int main(){
浮动f=;
如果(f==f)
printf(“hello\n”);
其他的
printf(“世界”);
返回0;
}
将被三个点(…)替换的内容很简单

float f = (puts("world"), exit(0), 0.0f);
编辑:是的,我知道你在寻找不同的答案。但我要表现得可爱一点,因为这看起来像是一个家庭作业或带回家的测验中的问题,甚至没有被分解成几个部分。

试试这个:

#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;
}
#包括
#包括
#包括
int main(){
浮动f=nanf(“0.0”);
printf(“%f\n”,f);
如果(f==f)
printf(“hello\n”);
其他的
printf(“世界”);
返回0;
}

IEEE 754浮点数可以表示正的或负的
无穷大
NaN
(不是数字)。这3个值来自计算结果未定义或无法准确表示的结果
NaN
将始终通过表达式传播。i、 e.任何包含
NaN
的表达式将计算
NaN

您还可以故意将浮点变量设置为
NaN
。例如,以下完全有效的浮点表达式将实现此目的:

 sqrtf(-1.0f) // 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");
}
#包括
#包括
内部主(空)
{
浮点数f=NAN;
如果(f==f)
printf(“hello\n”);
其他的
printf(“世界”);
}

请注意,此宏已在C99中引入,如果实现不支持
float
类型的静默NaN,则此宏不存在。

只有一些算术值。。。你能推荐一个吗?啊@迪特里希·埃普。你比我快了2秒!:-)这可能是OP想要的。不要使用任何函数或技巧。。。请给我推荐一些浮点数。@Rahul:你已经有下面的5个了。:)@清单否,无穷大与它们本身相等,您需要一个NaN。@Danielf感谢您的发现,我希望它对NaN进行评估,因为程序无法确定0.0f是“正的还是负的”。@Listing如果遵循IEEE规范,
x/0.0f
如果
x>0
,则为正无穷大,如果
x<0
为负值,如果
x==0
为NaN;请注意
-0.0f==0.0f
。如果除以
-0.0f
,符号会反转。公平地说,这也可能是一个面试问题。:)@赵:我希望他能得到这份工作与自身相比,无穷大将产生真值,就像任何普通数字一样。唯一不这样做的值是NaN。另外,你关于无穷大的陈述也不是真的,因为在某些情况下,输入无穷大会产生一个NaN。@Lindydancer感谢你指出这一点。更新了答案。:-)
#include <math.h>
#include <stdio.h>

int main(void)
{
  float f = NAN;
  if (f == f)
     printf("hello\n");
  else
     printf("world\n");
}