Gibt das Programm immer "ja" aus? Oder true immer 1?
-
int main(int argc, char **argv){ int x = 1; int y = 1; int a = 5; if(a % 10 != 0) { x++; } y += a % 10 != 0; if(x == y) printf("ja"); return 0; }
-
Ja.
EDIT:
Bitte nach ANSI C verschieben
-
if(5) printf("auch ja");Aber das wird "auch ja" ausgeben. Ist das sicher so definiert, dass true immer 1 ist oder könnte das auch mal was anderes sein?
-
Aber das wird "auch ja" ausgeben. Ist das sicher so definiert, dass true immer 1 ist oder könnte das auch mal was anderes sein?
Es ist nur definiert, dass false == 0 und true != false. D.h. true muss absolut nicht 1 sein.
Gruß, Caipi
-
oder könnte das auch mal was anderes sein?
Egal, solange false == 0 und true != false ist, ist alles in Butter, bei Vergleichen wie if (5) ...
edit: zu lahm
-
Caipi schrieb:
Aber das wird "auch ja" ausgeben. Ist das sicher so definiert, dass true immer 1 ist oder könnte das auch mal was anderes sein?
Es ist nur definiert, dass false == 0 und true != false. D.h. true muss absolut nicht 1 sein.
Gruß, Caipi
true ist true und nicht 0 oder 1 oder 42 oder sonst was. allerdings wird garantiert, dass die implizite konvertierung in int den wert 1 ergibt.
-
Wassermann schrieb:
Ist das sicher so definiert, dass true immer 1 ist oder könnte das auch mal was anderes sein?
Das kommt darauf an, aus welcher Richtung man das betrachtet. Von Ganzzahl nach bool konvertieren bedeutet, 0 evaluiert zu false, alles andere zu true. Von bool nach Ganzzahl konvertieren bedeutet, false evaluiert zu 0 und true zu 1.