2016江苏本一分数线:编程基础题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/26 04:53:01
若有定义int a=3;则执行完a+=a-=a*a后,a的值是。

编程 18:46:27
若有定义int x=3,y=3;则执行完表达式++x||++y;后,y的值

a=-12
y=3

为什么啊???能详细解释一下吗?谢谢(初学)

a=3
a+=a-=a*a
分解成 a-=(a*a)得a= a-(a*a)=3-9=-6
以及 a+=a得a=a+a=-12

x=3,y=3
++x||++y ,因为||为或运算,++x值为4即为真,所以整个表达式为真,短路求值后++y不执行,所以y的值依然是3。

最先计算的是a-=a*a
a=3-3*3=-6
然后计算a+=-6
a=-6+(-6)=-12

++x||++y
||(或)有个特点就是当前一个布尔值为真时,后面的就不计算,这叫做短路
++x=4>0所以++y就略过,y还是等于3

a+=a-=a*a实际上是a=a+(a-=a*a) 而a-=a*a实际上是a=a-a*a=-6
把-6代进去即是a=-6+(-6)=-12

执行完表达式后y的值并没有变