Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Penukaran Aritmetik Biasa Menentukan Jenis Keputusan Perduaan \' \' Operator dengan Operan Bertanda dan Tidak Bertanda?

Bagaimanakah Penukaran Aritmetik Biasa Menentukan Jenis Keputusan Perduaan \' \' Operator dengan Operan Bertanda dan Tidak Bertanda?

DDD
Lepaskan: 2024-12-01 18:15:12
asal
299 orang telah melayarinya

How Do Usual Arithmetic Conversions Determine the Result Type of Binary

Peraturan Promosi untuk Operator Binari yang Ditandatangani dan Tidak Ditandatangani

Pertimbangkan coretan kod berikut:

// Snippet 1
int max = std::numeric_limits<int>::max();
unsigned int one = 1;
unsigned int result = max + one;
Salin selepas log masuk
// Snippet 2
unsigned int us = 42;
int neg = -43;
int result = us + neg;
Salin selepas log masuk

Bagaimanakah pengendali " " menentukan jenis hasil yang betul dalam kes ini, memandangkan tanda tanda yang berbeza operan?

Pengendali mengikut peraturan "penukaran aritmetik biasa", yang menentukan langkah penukaran jenis berdasarkan jenis operan. Mengikut peraturan ini, jika mana-mana operan ialah:

  • ganda panjang, kedua-dua operan ditukar kepada ganda panjang.
  • ganda, kedua-dua operan ditukar kepada dua kali.
  • apung, kedua-dua operan ditukar kepada apungan.
  • panjang tanpa tanda, operan yang satu lagi ialah ditukar kepada unsigned long.
  • long int dan operan lain unsigned int, kedua-dua operan ditukar kepada unsigned long int jika nilai unsigned int boleh diwakili dalam long int; jika tidak, kedua-duanya ditukar kepada panjang.
  • panjang, operan yang satu lagi ditukar kepada panjang.
  • tanpa tanda, operan yang satu lagi ditukar kepada tidak bertanda.

Sejak int dan unsigned int boleh ditukar ganti dalam peraturan, operan dengan jenis yang lebih luas (unsigned int) dipilih sebagai jenis hasil.

Ini menerangkan sebab dalam Coretan 1, hasilnya tidak ditandatangani int (2147483648) dan dalam Coretan 2, hasilnya adalah int (-1). Operan yang ditandatangani (neg) ditukar secara tersirat kepada int tidak ditandatangani, menghasilkan nilai yang tidak ditentukan dalam kes kedua.

Atas ialah kandungan terperinci Bagaimanakah Penukaran Aritmetik Biasa Menentukan Jenis Keputusan Perduaan \' \' Operator dengan Operan Bertanda dan Tidak Bertanda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan