-4
此代碼打印「等於」和「1 0」。1不等於0,但代碼表示等於c
即使1 != 0
發生這種情況,爲何會發生這種情況?
if(2/2 == 2/2.0)
printf("equal \n");
printf("%d %d", 2/2, 2/2.0);
此代碼打印「等於」和「1 0」。1不等於0,但代碼表示等於c
即使1 != 0
發生這種情況,爲何會發生這種情況?
if(2/2 == 2/2.0)
printf("equal \n");
printf("%d %d", 2/2, 2/2.0);
2/2.0
的結果是類型雙的。但是您使用%d
來打印它,這是未定義的行爲。改用%lf
打印雙。這就是爲什麼你得到0
這是調用未定義行爲的可能結果。
未定義的行爲,您不能使用'%d'作爲雙精度 – Mat
相關:http://stackoverflow.com/q/2100490/694576 – alk