Bagikan melalui


Compiler Warning (level 4) C4800

Visual Studio 2019 dan yang lebih baru:

Konversi implisit dari 'type' ke bool. Kemungkinan kehilangan informasi

C4800 adalah peringatan tingkat 3 di Visual Studio 2015 dan yang lebih lama:

'type' : memaksa nilai ke bool 'true' atau 'false' (peringatan performa)

Peringatan ini dihasilkan ketika nilai secara implisit dikonversi menjadi jenis bool. Biasanya, pesan ini disebabkan oleh penetapan int variabel ke bool variabel di mana int variabel hanya berisi nilai true dan false, dan dapat dinyatakan ulang sebagai jenis bool. Jika Anda tidak dapat menulis ulang ekspresi untuk menggunakan jenis bool, maka Anda dapat menambahkan "!=0" ke ekspresi, yang memberikan jenis boolekspresi . Mentransmisikan ekspresi ke jenis bool tidak menonaktifkan peringatan, yaitu berdasarkan desain.

Peringatan ini tidak dipancarkan di Visual Studio 2017.

Peringatan ini nonaktif secara default dimulai di Visual Studio 2019. Gunakan /wn4800 untuk mengaktifkan C4800 sebagai peringatan tingkat n , atau /Wall untuk mengaktifkan semua peringatan yang nonaktif secara default. Untuk informasi selengkapnya, lihat Peringatan Pengkompilasi yang Nonaktif Secara Default.

Contoh

Sampel berikut menghasilkan C4800 dan menunjukkan cara memperbaikinya:

// C4800.cpp
// compile with: /W4 /w44800
int main() {
   int i = 0;

   // To fix, instead try:
   // bool i = 0;

   bool j = i;   // C4800
   j++;
}