提问人: 提问时间:5/30/2020 最后编辑:Roberto Caboni 更新时间:11/2/2020 访问量:532
赋值运算符是否可以在 if 语句中使用。好像使用了语句 布尔表达式 [duplicate]
Can assignment operator be used in if statements. As if statements are used Boolean expression [duplicate]
问:
我期待 中出现错误,因为赋值运算符用于 if 语句。if(b=5)
Code:
#include <stdio.h>
int main() {
int a=10, b=10;
if(b=5)
a--;
printf("%d, %d", a, b--);
return 0;
}
答:
1赞
Roberto Caboni
5/30/2020
#1
您预计它会引发错误,因为在尝试使用比较运算符时似乎是一个错别字,通常用于这样的 if 语句中==
if ( b == 5 )
if 语句中的表达式
if ( b = 5 )
实际上,其计算方式与 C 中的每个表达式相同。在这种情况下,它的计算值是赋值的值,并且由于它不是零,所以它等价于布尔表达式。5
true
这可能是一个微妙的错别字,因此作者可能进行了比较而不是同化。无论如何,它不会引发错误,因为它是有效的 C。
幸运的是,在许多编译器中都会发出警告。确保在编译器选项中启用所有警告,并且永远不要忽略它们。这样,您将在未来避免这些微妙的陷阱。
1赞
DeltA
5/30/2020
#2
if 语句中有一个有效的赋值。此类操作的结果是赋值 (5),该值在 if 语句中有效,计算结果为 true。
实际上,除 0 以外的任何数字都将被解释为 true。
也许你已经知道了,但你没有在那里进行比较。比较操作为 。==
评论
if
0
true