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


  • Mod

    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.


Anmelden zum Antworten