Untuk jawaban lebih detail. Lihatlah apa yang dikatakan bagian §5 / 9 dari Standar C ++
Banyak operator biner yang mengharapkan operan tipe aritmatika atau enumerasi menyebabkan konversi dan menghasilkan tipe hasil dengan cara yang sama. Tujuannya adalah untuk menghasilkan jenis yang umum,
yang juga merupakan jenis hasilnya .
Pola ini disebut konversi aritmatika biasa, yang didefinisikan sebagai berikut:
- Jika salah satu operan bertipe long double, yang lain harus dikonversi menjadi long double.
- Kalau tidak, jika salah satu operan ganda, yang lain harus dikonversi menjadi ganda.
- Kalau tidak, jika salah satu operan mengambang, yang lain harus dikonversi menjadi mengambang.
- Kalau tidak, promosi integral (4.5) harus dilakukan pada kedua operan.54)
- Kemudian, jika salah satu operan tidak ditandatangani lama yang lain akan dikonversi menjadi tidak ditandatangani lama.
- Jika tidak, jika satu operan adalah int panjang dan int unsigned lainnya, maka jika int panjang dapat mewakili semua nilai dari int unsigned, int unsigned harus dikonversi ke int panjang; jika tidak kedua operan akan dikonversi menjadi int panjang yang tidak ditandatangani.
- Kalau tidak, jika salah satu operan panjang, yang lain harus dikonversi menjadi panjang.
- Kalau tidak, jika salah satu operan tidak ditandatangani, yang lain akan dikonversi menjadi unsigned.
[Catatan: jika tidak, satu-satunya kasing yang tersisa adalah bahwa kedua operan adalah int]
^
adalah XOR.