ich versuchte zusammen bool Wert zu schaffen, sagen:Hinzufügen von zwei bool Werte in C/C++
bool i = 0, j = 0, k = 0;
cout << sizeof(i + j + k) << endl;
Das Ergebnis 4 ist, was bedeutet, wird das Ergebnis auf eine 'int' umgewandelt Wert.
Ich möchte fragen: Ist das ein C/C++ Standard-Betrieb? garantiert der Compiler immer, dass der temporäre Wert bei Überlauf in einen größeren Typ konvertiert wird? Vielen Dank!
Danke für die Antworten, eine Frage folgen: sagen, wenn ich es tue: unsigned short i = 65535, j = 65535;
cout << sizeof(i + j) << endl;
Das Ergebnis ist 4. Warum es ‚int‘ gefördert wurde?
ein Int ist kein größerer Typ als ein Bool – aaronman
Gewährleistet der Compiler immer, dass der temporäre Wert in einen größeren Typ konvertiert wird, wenn er überläuft? Nein, es konvertiert niemals einen Wert in einen größeren Typ, bis eine Umwandlung angefordert wird. – Tushar
@Aaronman: In den meisten Implementierungen ist 'sizeof (bool)