若定义int a=1,b=2,c=3,则运行++a‖++b&&++c,后b的值为多少?

若定义int a=1,b=2,c=3,则运行++a‖++b&&++c,后b的值为多少?如题

优先级 ++ > && > ||
可以看成++a || (++b && ++c),因为++a已经==2 > 0 因此,后面不再计算。
即a = 2, b= 2 ,c =3
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-23
一个一个试过了,A无法编译通过。报错是lvaluerequiredasleftoperandofassignment。
第2个回答  2016-06-23
还是2不变,追问

为啥?++不是优先级最高吗

追答

逻辑或从左往右,左边a是真,就不计算右边了。

...a=1,b=2,c=3,则运行++a‖++b&&++c,后b的值为多少?
可以看成++a || (++b && ++c),因为++a已经==2 > 0 因此,后面不再计算。即a = 2, b= 2 ,c =3

若有定义:int a=1,b=2,c=3;语句++a||++b&&++a运行后b 的值为...
答案是2,不是3 ++a||++b&&++a 按照运算符优先级,等价于:++a||(++b&&++a)因为++a的值为2,为真,所以整个表达式的值为真,||右边的表达式不再运算,即逻辑或短路,所以b的值还是原来的值,即2

int a=1,b=2,c=3; 执行表达式(a=b+c)||(++b)后a,b,c的值分别是...
a = b + c 这句已经是真(TRUE)了,所以,++b 就不执行了,b 的值还是 2

若有“int a=1,b=2,c;c=a+++b++;”,则a,bc的值分别为多少?
a=2,b=3,c=3;自增运算符在后边,表示先运算在自增,即先是c=a+b=3,然后a自增到2,b自增到3

int a =1 b= 2 c= 3 语句(++b,a)||(a++,c++);执行后a,b,c是多少
a++,c++);首先计算(++b,a):逗号表达式(++b,a)=a=1 过程中++b:b==3 由于使用||的逻辑运算符,当左边的值为真的时候,整个表达式的值即为真,计算机就不会再去计算(a++,c++),因此 a=1(参加左边运算,却没改变值的大小)b=3(参加运算,值自加1)c=3(不参加右边运算,值不变)...

若有定义int a=1,b=2,c=3则执行表达式(a=b+c)||(++b)后a.b.c的值...
我用 GCC 3.4.2 和 VC 6.0 编译后的结果都是5,2,3 因为 || 号,只执行了前面的部分,a=b+c 已经返回了结果“真”,所以没有执行 ++b 部分的。很可能是编译器进行了优化的结果。不知道你用的编译器是什么。

已知a=1,b=2,c=3,则表达式a*b&&(b++,!c)&&(a++,c++)的值是。该表达式...
所以,(b++,!c)经计算后为(2,0),逗号表达式的值是0,同时b为3,而a*b&&(b++,!c)&&(a++,c++)=2&&0&&(a++,c++)已为假,不会再计算(a++,c++),因此,结果是表达式a*b&&(b++,!c)&&(a++,c++)的值是0,该表达式运算过后,a=1,b=3,c=3。

inta=1,b=2,c=3求表达式c+=a>b?++a:++b
三目运算的优先级高于赋值运算,所以先计算三目表达式a>b?++a:++b.由于a>b为0,所以取++b的值3,再算赋值运算c+=3,结果是6.

若已定义int a=3,b=2,c=1;则语句++a||++b&&++c;运行后b的值为()
答案:D 在表达式中,运算步骤为(如果你不清楚,请看看运算符的优先顺序):1.++a 则a=4 2.++b 则b=3 3.++c 则c=2 4.&& 则为真 5.|| 则为直 表达式最后为真。在运算中,b只递增了一次,所以运行后b的值为3,选D

若已定义 int a=1,b=2,t=3;则执行以下程序段后变量a,b,c的值分别为...
if(a<b)\/\/条件成立 { t=b; t等于2 b=a; b等于1 a=t; c等于2 } 或:优先级 ++ > && > || 可以看成++a || (++b && ++c),因为++a已经==2 > 0 因此,后面不再计算。即a = 2, b= 2 ,c =3

相似回答