设int x,y;则执行y=(x=1,++x,x+2);语句后,y的值是...

括号中是逗号表达式,逗号表达式一直计算直至遇到分号,返回最后一个表达式的值先计算x=1,即给x赋值再计算++x;此时x=2;后x+2,值为4,遇到分号,将这个值返回,赋给y,则y为4

x=1

x是2,y是1. 第一步把x+y的值赋给x,即x为3 第二步把x-y的值赋给y,即y为3-2=1 第三步把x-y的值赋给x,即x为3-1=2 这个就是把x和y值互换的.

因为a=(x=x +1)-->a=3已经为“真”了,||后的表达式没有必要计算了,所以||后面的y=y +1没有执行!

int x;y; x=y=1; //这句后x=1 y=1++x||++y; 由于++x后x=2,2>0为真,所以程序不在执行++y的判断,y的值仍然为1

x=3,y=2,a=1,分析如下:首先执行x=x+1,那么x=3了,由于是逻辑或运算,一真必真,那么(y=y +1)系统就不会执行它了直接忽略,为什么呢?因为式子的逻辑值已经铁定为真了,没必要再去执行了嘛.整个式子(x=x +1)‖(y=y +1)的逻辑值是真,用1来表示真,所以a的值为1,所以最后的结果是:x=3,y=2,a=1.

++y 自增为3 x=x+3 1+3=4赋值给X 答案为A

开始x和y都赋值为2 t=++x||++y注意到后边这个是 取“或”,因此当程序执行了++x时,判断为真(不为0即为真)后边的++y就没有执行,如果你把x的值改为-1时,再执行t=++x||++y后,y就变为3了 因此结果是2

x = 0; t = x++ || ++y;/,所以先执行“++x” 前缀加是先加1.整个表达式为真; y = 1逻辑或是两者只要满足一个条件为真(非零即真),整个表达式即为真, y.后面"++x || ++y&quot,所以“++y”没有执行运算; /,再回头看看你问的这个例子;部分; 同上输出值3,逻辑或的运算符的结合顺序是自左向右.前面xy复制语句.你可以在机子上作如下测试:1,为真; / y = 3. 用逻辑与测试上面两个例子 测试完了; t = ++x || ++y;/ 输出x,结果就为3,就不说了,后取值判断.加1之后, t的值看看2,x为4. x = -1

选择 ④ 和 ③ 当执行 ++x || ++y 的时候 由于编译器的优化问题 当执行到++x 不为 0的时候 不会执行 || 后面的 ++y所以 y 还是 初始值 1 举一反一:假如 语句变为 --x|| y++由于 || 前面的 --x 值为 0 为 假 那么 后面就会执行 y++最后 的结果 是 x =0 ,y=2

相关文档

电脑版