В C единственным требованием для оператора if
является то, что оно содержит выражение .Истинность утверждения основана на том, оценивает ли выражение ноль.
Оператор присваивания также оценивает присвоенное значение, поэтому if(a = 0)
будет ложным, тогда как if(a = x)
, где x != 0
будет истиной.
Поскольку оператор присваивания является выражением,Допустимо помещать в оператор if
, хотя частая ошибка новичка заключается в использовании оператора присваивания, где они намеревались использовать оператор теста на равенство ==
.
Один из способов избежать этого - ошибкаесли любая из сторон сравнения является r-значением, поместите его слева, чтобы при случайном использовании =
, где вы имели в виду ==
, вы получите ошибку компиляции.Сравните:
if(p = NULL) // Valid syntax
...
if(NULL = p) // Syntax error
...