Mengapakah membandingkan int dengan rentetan::size_type mencetuskan amaran dalam kod yang dikemas kini?

Linda Hamilton
Lepaskan: 2024-11-07 03:39:02
asal
547 orang telah melayarinya

Why does comparing an int to string::size_type trigger a warning in the updated code?

Perbandingan Antara Ungkapan Integer Bertanda dan Tidak Bertanda: Amaran

Siasatan berkisar tentang amaran yang dihadapi semasa membandingkan ungkapan integer bertanda dan tidak bertanda dalam konteks menentukan pelapik bingkai untuk salam bersempadan asterisk.

Soalan:

Mengapa amaran dikeluarkan apabila membandingkan int dengan rentetan::size_type dalam atur cara yang dikemas kini, manakala kod asal tidak menghadapi masalah?

Jawapan:

Mengisytiharkan pembolehubah sebagai tidak ditandatangani atau rentetan::size_type jika ia akan dibandingkan dengan saiz adalah dinasihatkan untuk mengelakkan amaran sedemikian. Menggunakan jenis yang tepat untuk perbandingan (cth., string::size_type apabila membandingkan dengan panjang rentetan) adalah disyorkan.

Perbandingan Mengejutkan:

Amaran berpunca daripada pelbagai julat integer yang ditandatangani dan tidak ditandatangani, yang membawa kepada keputusan yang tidak dijangka dalam perbandingan. Untuk memastikan kejelasan, tukar satu nilai secara eksplisit kepada jenis yang serasi dengan yang lain sebelum melakukan perbandingan.

Contoh Penukaran:

if (i >= 0)
{
    if ((unsigned)i >= u)
        iIsGreaterThanOrEqualToU();
    else
        iIsLessThanU();
}
else
{
    iIsNegative();
}
Salin selepas log masuk

Penjelasan Lanjut:

Sama ada isu ini akan ditangani kemudian dalam buku "Accelerated C " tidak disebut secara jelas dalam siasatan asal.

Atas ialah kandungan terperinci Mengapakah membandingkan int dengan rentetan::size_type mencetuskan amaran dalam kod yang dikemas kini?. 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!