C语言 可以在 if 语句中使用赋值运算符吗?好像语句是布尔表达式



我预计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

幸运的是,在许多编译器中会发出警告。确保启用编译器选项中的所有警告,并且永远不要忽略它们。这样,您将来可以避免这些微妙的陷阱。

在 if 语句中有一个有效的赋值。此类操作的结果是赋值 (5(,该值在 if 语句中有效,计算结果为 true。

实际上,除 0 以外的任何数字都将被解释为 true。

也许你已经知道了,但你没有在那里进行比较。比较操作==

相关内容

  • 没有找到相关文章

最新更新