編譯器警告 (層級 4) C4706
在條件運算式中使用指派運算子
條件表達式中的測試值是指派的結果。
指派具有值(指派左邊的值),可在另一個運算式中合法使用,包括測試表達式。
下列範例會產生 C4706:
// C4706a.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a = b ) // C4706
{
}
}
即使您在測試條件周圍加上括號,也會發生警告:
// C4706b.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) ) // C4706
{
}
}
如果您打算測試關聯,而不是進行指派,請使用 ==
運算符。 例如,下列程式代碼行會測試 a 和 b 是否相等:
// C4706c.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a == b )
{
}
}
如果您想要將測試值設為工作分派的結果,請測試以確保指派不是零或不為 Null。 例如,下列程式代碼不會產生此警告:
// C4706d.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) != 0 )
{
}
}