Rumah > pembangunan bahagian belakang > C++ > Mengapakah \'25\' 1 Output \'5\' dalam C ?

Mengapakah \'25\' 1 Output \'5\' dalam C ?

Patricia Arquette
Lepaskan: 2024-11-01 14:38:02
asal
744 orang telah melayarinya

Why Does

Gabungan Rentetan dan Nombor yang Tidak Dijangka dalam C : Meneroka "456" 1

Coretan kod

< pra>#include
int main()
{

std::cout << "25"+1;
return 0;
Salin selepas log masuk

}

menimbulkan soalan yang membingungkan: mengapa ungkapan "25" 1 keluaran "5" dan bukannya "26" yang dijangkakan? Untuk membongkar misteri ini, mari kita mendalami fungsi dalaman kod ini.

Dalam C , literal rentetan seperti "25" tidak dianggap sebagai rentetan sebenar tetapi sebagai tatasusunan aksara. Dalam contoh yang diberikan, "25" adalah bersamaan dengan tatasusunan aksara {'2', '5', ' '}, dengan ' ' ialah penamat nol yang menandakan berakhirnya rentetan.

Apabila tatasusunan digunakan dalam ungkapan tanpa pemutus eksplisit, ia secara automatik mereput ke penunjuk kepada elemen pertamanya. Jadi, "25" dengan berkesan mereput kepada &"25"[0], penunjuk kepada aksara '2'. Menambah 1 pada penuding ini menambahkannya untuk menunjuk kepada aksara seterusnya, iaitu '5'.

Plot semakin tebal apabila kita mempertimbangkan kelakuan std::ostream, jenis std::cout. Kelas ini boleh menerima kedua-dua char dan const char (yang char* akan mereput) dan mentafsirkannya sebagai rentetan yang ditamatkan nol. Oleh itu, apabila ia menerima &"25"[0], ia mencetak aksara daripada penuding itu sehingga ia menemui penamat nol, menyebabkan "5" dipaparkan sebagai output.

Atas ialah kandungan terperinci Mengapakah \'25\' 1 Output \'5\' dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan