表达式运算顺序问题
a< 1&&--a>1这个表达式,a=3的话,最后结果a不是等于2嘛?
跟自减优先级高些吧? &&是逻辑运算符,&&两边都成立,整个表达式才成立,a< 1&&--a>1因为你让a=3,a就不小于1了,a小于1就不成立,整个表达式就不成立,编译器就不会看后面的--a>1了。这就是传说中的短路。 良弓无箭 发表于 2020-2-20 09:03
&&是逻辑运算符,&&两边都成立,整个表达式才成立,a< 1&&--a>1因为你让a=3,a就不小于1了,a小于1就不成立 ...
那自减不是优先级高一些嘛? #include<stdio.h>
int main()
{
int a=3;
--a>1&&a<1;
printf("%d",a);
}
这样的结果是2;
#include<stdio.h>
int main()
{
int a=3;
a<1&&--a>1;
printf("%d",a);
}
这样的结果是三。
总的来说,自减的优先级虽高,但&&是从左到右执行的。先处理左边的表达式,在处理右边的表达式。
页:
[1]