Derleyici Uyarısı (düzey 4) C4800
Visual Studio 2019 ve üzeri:
'tür'den bool'a örtük dönüştürme. Olası bilgi kaybı
C4800, Visual Studio 2015 ve önceki sürümlerde bir düzey 3 uyarısıdır:
'type' : değeri bool 'true' veya 'false' olarak zorlama (performans uyarısı)
Bu uyarı, bir değer örtük olarak türüne bool
dönüştürüldüğünde oluşturulur. Bu ileti genellikle değişkenlerin yalnızca ve false
değerlerini içerdiği değişkenlere bool
int
atanmasına int
neden olur ve türü bool
olarak yeniden işlenebilirtrue
. türünü bool
kullanmak için ifadeyi yeniden yazamıyorsanız ifadeye "!=0
" ekleyebilirsiniz ve bu da ifade türünü bool
verir. İfadenin yazılması bool
uyarıyı devre dışı bırakmaz ve bu da tasarım gereğidir.
Bu uyarı Visual Studio 2017'de gösterilmez.
Visual Studio 2019'dan başlayarak bu uyarı varsayılan olarak kapalıdır. C4800'ü düzey n uyarı olarak etkinleştirmek için /wn 4800 veya varsayılan olarak kapalı olan tüm uyarıları etkinleştirmek için /Wall kullanın. Daha fazla bilgi için bkz . Varsayılan Olarak Kapalı Olan Derleyici Uyarıları.
Örnek
Aşağıdaki örnek C4800 oluşturur ve nasıl düzeltileceğini gösterir:
// C4800.cpp
// compile with: /W4 /w44800
int main() {
int i = 0;
// To fix, instead try:
// bool i = 0;
bool j = i; // C4800
j++;
}