Rumah > pembangunan bahagian belakang > C++ > Mengapakah 'long long' berkelakuan berbeza daripada 'int' atau 'long' dalam C/C ?

Mengapakah 'long long' berkelakuan berbeza daripada 'int' atau 'long' dalam C/C ?

DDD
Lepaskan: 2024-11-07 17:23:03
asal
763 orang telah melayarinya

Why does 'long long' behave differently than 'int' or 'long' in C/C  ?

Memahami Long Long dalam C/C

Dalam C dan C , jenis data 'long long' mewakili integer bertanda dengan 64 bit ketepatan. Ini membolehkan ia mewakili nombor yang sangat besar atau kecil yang tidak boleh ditampung oleh jenis integer piawai seperti 'int' atau 'long'.

Dalam coretan kod yang disediakan, beberapa soalan telah dibangkitkan mengenai gelagat 'long' pembolehubah panjang':

  • Saiz 'panjang panjang': Mengapakah 'sizeof(num3)' menghasilkan 0, menunjukkan pembolehubah tidak dimulakan?
  • Limpahan Integer: Mengapakah kod menyusun dan melaksanakan tanpa ralat, menghasilkan nilai yang jauh lebih besar daripada 10000000000 apabila baris ulasan ('num3 = 100000000000;') tidak diulas?
  • Literal Integer Constant : Mengapakah memberikan pemalar integer lebih besar daripada had jenis 'panjang' kepada pembolehubah 'panjang' mengakibatkan ralat penyusunan?

Saiz 'panjang panjang':

Pengendali 'sizeof' mengembalikan saiz pembolehubah atau jenis data dalam bait. Memandangkan 'num3' tidak dimulakan dengan sebarang nilai, ia kekal tidak dimulakan dan saiznya tidak ditentukan, menghasilkan 0. Untuk membetulkannya, mulakan 'num3' secara eksplisit dengan nilai 'long long'.

Limpahan Integer:

C mengendalikan limpahan integer secara senyap. Apabila nilai yang diberikan kepada pembolehubah melebihi kapasitinya, nilai itu akan berputar dan terus mengira dari nilai terendah. Dalam kes ini, memberikan 10000000000 kepada pembolehubah 'panjang' menghasilkan limpahan, dan hasilnya ialah nilai negatif. Walau bagaimanapun, oleh kerana 'num2' ialah 'long long', ia boleh menampung nilai yang besar tanpa limpahan.

Pemalar Integer Literal:

Dalam C dan C , integer pemalar ditaip dengan kuat. Menetapkan pemalar integer literal yang melebihi had jenis data destinasi mengakibatkan ralat penyusunan. Dalam contoh ini, pemalar 100000000000 melebihi julat 'panjang' dan penambahan 'LL' secara eksplisit menyatakan bahawa ia harus dianggap sebagai pemalar 'panjang panjang'.

Atas ialah kandungan terperinci Mengapakah 'long long' berkelakuan berbeza daripada 'int' atau 'long' dalam C/C ?. 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