运算符问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:30:56
1、已知a=2,b=4,执行表达式!(a++%2)||(b*=a)&&0;求b的值
2、设a、b、c为整形变量,且a=2,b=3,c=4;执行表达式a++>2&&++b==c后,求b的值;
3、int a=1,执行表达式a++<1&&a++&&a+=2;求a的值。

请高手回答下这个的解题思路和过程,这三种都应该是一个类型的,主要是有点糊涂,还请指点??

注意 && 和 || 的优先级和短路现象就没问题了

(a++%2)||(b*=a) && 0
&& 优先级高于 ||,先执行(b*=a),故b=4*2=8;

a++>2&&++b==c
因为a=2,所以不会执行++b==c,故b=3

a++<1&&a++&&a+=2
因为a=1,所以只执行a++<1,故a=2;

8
3
2