[英]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.