该计划为
main()
{
int a=1;
if( a-- > 0)
printf("AAAA");
else
printf("BBBB");
}
其输出为AAAA
如果我使用
main()
{
int a=1;
if( (a--) > 0)
printf("AAAA");
else
printf("BBBB");
}
那么为什么输出再次为AAAA
。
()
比--
有更多偏好。
答案 0 :(得分:9)
后缀运算符--
具有higher precedence而不是任何布尔比较运算符。
您对此有何期待? a--
始终计算为a
的值,该值在评估后递减。
答案 1 :(得分:2)
后缀--
运算符返回变量的原始值,即使在递减后也是如此。
是的,a
在比较前递减,但表达式a--
的结果是不是 a
,但值1
。
答案 2 :(得分:0)
--
在表达式中使用变量后递减变量的值。
答案 3 :(得分:0)
此处括号的使用对代码没有任何影响,因为评估的顺序在括号和不带括号的情况下是相同的。你是正确的,括号的优先级高于 - 。但是,在这种情况下,括号不会更改评估顺序,因为您没有按照自然评估的顺序对操作数进行分组。
答案 4 :(得分:0)
以下是C ++中所有operator's precedence的链接。