In C und sogar in C99 nutzen Entwickler häufig die implizite Konvertierung von booleschen Werten (bool) in ganze Zahlen (int) . Es ist jedoch wichtig, die Portabilität und die Auswirkungen dieser Konvertierung zu verstehen, um die Korrektheit des Codes sicherzustellen.
Beachten Sie die folgenden Codeausschnitte:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Was sind die erwarteten Ergebnisse dieser Behauptungen? Werden sie garantiert in allen Kontexten bestanden?
Portabilität der Bool-zu-Int-Konvertierung
Die implizite Konvertierung von Bool nach Int ist im C-Standard definiert:
Diese Konvertierung ist vollständig portierbar und garantiert korrektes Verhalten auf allen kompatiblen Compilern .
Bewertung von Behauptungen
Basierend auf den Konvertierungsregeln können wir die Behauptungen auswerten:
Schlussfolgerung
Im Kontext des bereitgestellten Codes die Behauptungen wird bestanden, da die Konvertierung von bool in int implizit durchgeführt wird und die erwarteten Werte (1 für „true“ und 0 für „false“) korrekt zugewiesen werden. Es ist jedoch wichtig zu beachten, dass dieses Verhalten nicht auf die dargestellten Codeausschnitte beschränkt ist und sich auf alle Situationen erstreckt, in denen solche Konvertierungen eingesetzt werden.
Das obige ist der detaillierte Inhalt vonVerhalten sich Konvertierungen von „bool' zu „int' in C und C99 immer vorhersehbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!