2016-07-22 154 views
-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); 
+3

未定義的行爲,您不能使用'%d'作爲雙精度 – Mat

+0

相關:http://stackoverflow.com/q/2100490/694576 – alk

回答

5

2/2.0的結果是類型的。但是您使用%d來打印它,這是未定義的行爲。改用%lf打印。這就是爲什麼你得到0這是調用未定義行爲的可能結果。