我期待中的错误if(b=5)
,因为在if语句中使用了赋值运算符。
Code:
#include <stdio.h>
int main() {
int a=10, b=10;
if(b=5)
a--;
printf("%d, %d", a, b--);
return 0;
}
您希望它会引发错误,因为在尝试使用比较运算符时似乎出现了错字==
,通常在这样的if语句中使用
if ( b == 5 )
if语句中的表达式
if ( b = 5 )
实际上就像C中的每个表达式一样进行求值。在这种情况下,其求值为赋值的值5
,并且由于它不为零,因此它等效true
于布尔表达式。
这可能是一个细微的错字,因此作者可能进行了比较而不是该比较。不管怎么说,因为它不会引发错误是有效的C。
幸运的是,在许多编译器中都会引发警告。确保在编译器选项中启用所有警告,并且永远不要忽略它们。这样,您将来就可以避免这些细微的陷阱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句