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

Patricia Arquette
Lepaskan: 2024-11-01 14:38:02
asal
621 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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!