2016-07-22 19 views
-4

Dieser Code gibt sowohl "gleich" als auch "1 0" aus.1 ist nicht gleich 0 aber der Code sagt gleich in c

Warum passiert das, obwohl 1 != 0?

if(2/2 == 2/2.0) 
    printf("equal \n"); 

printf("%d %d", 2/2, 2/2.0); 
+3

Undefiniertes Verhalten, Sie können '% d' nicht für ein Doppel – Mat

+0

verwenden Related: http://stackoverflow.com/q/2100490/694576 – alk

Antwort

5

Das Ergebnis ist vom Typ 2/2.0Doppel. Aber Sie verwenden %d, um es zu drucken, das ist undefined Verhalten. Verwenden Sie stattdessen %lf, um eine doppelte zu drucken. Deshalb erhalten Sie 0, was ein mögliches Ergebnis des Aufrufs von undefiniertem Verhalten ist.