簡體   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