Für detailliertere Antwort. Schauen Sie sich an, was der Abschnitt §5 / 9 des C ++ - Standards sagt
Viele binäre Operatoren, die Operanden vom Typ Arithmetik oder Aufzählung erwarten, verursachen Konvertierungen und ergeben auf ähnliche Weise Ergebnistypen. Der Zweck besteht darin, einen gemeinsamen Typ zu erhalten,
der auch der Typ des Ergebnisses ist .
Dieses Muster wird als übliche arithmetische Konvertierung bezeichnet, die wie folgt definiert ist:
- Wenn einer der Operanden vom Typ long double ist, wird der andere in long double konvertiert.
- Wenn einer der Operanden doppelt ist, wird der andere in double konvertiert.
- Wenn andernfalls einer der Operanden float ist, wird der andere in float konvertiert.
- Andernfalls werden die integralen Beförderungen (4.5) für beide Operanden durchgeführt.54)
- Wenn einer der Operanden lange ohne Vorzeichen ist, wird der andere in Long ohne Vorzeichen konvertiert.
- Wenn andernfalls ein Operand ein Long-Int und der andere ein Int ohne Vorzeichen ist, muss das Int ohne Vorzeichen in ein Long-Int konvertiert werden, wenn ein Long-Int alle Werte eines Int ohne Vorzeichen darstellen kann. Andernfalls werden beide Operanden in unsigned long int konvertiert.
- Wenn andernfalls einer der Operanden lang ist, wird der andere in long konvertiert.
- Andernfalls wird, wenn einer der Operanden ohne Vorzeichen ist, der andere in einen Vorzeichen ohne Vorzeichen konvertiert.
[Hinweis: Andernfalls bleibt nur der Fall, dass beide Operanden int sind.]
^
ist XOR.