繁体   English   中英

浮点运算,C输出

[英]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浮点数可以表示正或负infinityNaN (不是数字)。 这3个值来自计算,其结果未定义或无法准确表示。 NaN始终通过表达式传播。 即任何含有NaN表达都会评估NaN

您还可以故意将浮点变量设置为NaN 例如,以下完全有效的浮点表达式将起到作用:

 sqrtf(-1.0f) // NaN

有关浮点数的无穷大NaN的更多信息。


PS:我很想忽略这一点,因为它看起来像是一个简单的作业Q.但是家庭作业标签被弃用了所有......

您可以使用math.hNAN宏。

#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM