Aracılığıyla paylaş


Derleyici Uyarısı (düzey 4) C4706

koşullu ifade içinde atama

Koşullu ifadedeki test değeri atamanın sonucuydu.

Atamanın, test ifadesi de dahil olmak üzere başka bir ifadede yasal olarak kullanılabilecek bir değeri (atamanın sol tarafındaki değer) vardır.

Aşağıdaki örnek C4706 oluşturur:

// C4706a.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a  = b ) // C4706
   {
   }
}

Uyarı, test koşulunun etrafındaki parantezleri iki katına çıkarsanız bile gerçekleşir:

// C4706b.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a  =  b ) ) // C4706
   {
   }
}

Amacınız bir ilişkiyi test etmek ve atama yapmak istemiyorsanız işlecini == kullanın. Örneğin, aşağıdaki satır a ve b'nin eşit olup olmadığını sınar:

// C4706c.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a == b )
   {
   }
}

Test değerinizi bir atamanın sonucu yapmayı planlıyorsanız, atamanın sıfır olmadığından veya null olmadığından emin olmak için test edin. Örneğin, aşağıdaki kod bu uyarıyı oluşturmaz:

// C4706d.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a = b ) != 0 )
   {
   }
}