
sum=(a--==++b)100:200;
?的优先权高于=,所以先(a--==++b),而(a--==++b) 等价于(++b a==b a--) ,故相等,取100
所以sum=100
第一次循环指令loop语句的时候 cx-1=0-1=FFFF。也就是说执行第一次后CX的值为FFFF,然后再次执行LOOP的时候CX继续减1,直到CX再次减为0的时候一共执行了FFFFH次,同时,AX也一直加一加到溢出为0为止,换算成十进制是执行了65536次,结果CX AX都是0但不是楼上那么解释的,因为这是个非零次循环,循环至少要执行一次的,怎么可能一开始就不执行了呢?
int x=3,y=1; while(--x!=y/x) y+=2;
第一次循环x的值是2 因为--x先减1再计算,y=1
第二次循环x的值是1 ,y=3
第三次循环x的值是0,出错。
这段程序先判断--x等不等于y++,--x先自减再比较所以是9,y++先比较再自加所以此时也是9,所以这个三目运算符( ? : )问号前面的判别式为真,所以执行冒号前面的表达式,变量x再次自减,此时x为8,之后先后执行b=x++;c=y;两条语句,注意此时y的值为10,不难发现答案为B
很简单,看一下吧
a++是先使用a(来比较)再赋值,而++b正好相当,是先赋值给b再进行比较
a=1;
b=0;
然后if(a++>++b)的结果是if(1>1)即if(0),注:这里0表示假,原因如上所述,而比较完之后肯定是a=2; b=1;
然后再因为if(0)执行b--,即b=0;
后面估计你也会明白了,a+=b;即为a=a+b;
a=2+0=2
&&和||在运算时有短路效应,意思就是说如果a&&b中,a为假,则肯定a&&b为假,b就不需要运算,同样a||b,如果a为真,同样a||b肯定为真,也无需运算b,上图中a>b为假,所以m就为假(或者说为0),那后面的就被省略了,n并未被改变。
B
判断语句
if(x>y)不成立
因为没有大括号,所有只有
z=x;这句是判断后执行的语句,因为x>y为false,所有不执行,而执行了
x=y;y=z这句,所有x=2,y=3,z=3,所有答案是233,所有选B
以上就是关于执行下列程序段后,sum的值是 int sum; int a=10,b=9; sum=(a--==++b)100:200;全部的内容,包括:执行下列程序段后,sum的值是 int sum; int a=10,b=9; sum=(a--==++b)100:200;、说明下列程序段执行后AX和CX的值是什么 SUB AX,AX SUB CX,CX LP:INC AX LOOP LP、8.执行下列程序段后,y的值是 。 int x=3,y=1; while(--x!=y/x) y+=2; 为什么我在JAVA中输不出来值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)