黑马程序员技术交流社区

标题: 以下程序段输出是( ) [打印本页]

作者: 几率收割    时间: 2015-6-29 23:27
标题: 以下程序段输出是( )
以下程序段输出是()
   int  i=0,j=0,a=6;
   if ((++i>0) || (++j>0 )) a++ :
System.out.println(“i=”+i+” ,j=”+j+” ,a=”+a);
 A.i=0,j=0,a=6    B.i=1,j=1,a=7   C.i=1,j=0,a=7   D.i=0,j=1,a=7
作者: 小骆驼    时间: 2015-6-29 23:31
当然是C了啊
作者: vilion    时间: 2015-6-29 23:45
我觉得是b
作者: wx_J25HxI5W    时间: 2015-6-30 00:04
果断C啊,双或短路J不参与运算
作者: fantianfei    时间: 2015-6-30 09:52
答案应该是c。。。。。。。。。
作者: 汪磊の    时间: 2015-6-30 15:22
答案是C了
作者: dillinger    时间: 2015-6-30 15:51
选c~
++a>0以后就不判断了
作者: dragonsoull    时间: 2015-6-30 19:38
(++i > 0) 条件成立, || 短路了,(++j > 0)就不运行了。a++了,所以是C
作者: 路途    时间: 2015-6-30 19:59
分析一下,首先++i>0表达式的执行顺序为,先让i加1然后在和0比较,至于为啥,呵呵记住就行,所以这个结果为true哦,i同时也变成了1;然后++j>0同理为true,但是这句是不会执行的,因为受到运算符||的影响,这个的短路效果导致如果||这个运算符前面的表达式为true,就不会往后执行了,因为无论后面的这个表达式的结果是true还是false,都不会对(++i>0) || (++j>0 )这整个表达式的结果产生影响,但是如果前一个表达式返回false,后面的就会执行了,最终结果取决于后面的,所以j仍然等于0;所以最终的if条件结果为true,执行if语句后面的代码,a加1变成了7;所以最终i=1,j=0;a=7;
作者: 1115302782    时间: 2015-6-30 21:54
答案是C,if语句的判断是或运算因为++i是真所以会造成或短路也就是不执行++j,就往下执行a++,所以i的值加1,j没变,a的值加1
作者: JJJD    时间: 2015-6-30 22:00
学习啦。。。。
作者: 1千克=1024克    时间: 2015-6-30 22:20
选C ~ ~~
作者: 等你的季节-夏天    时间: 2015-6-30 22:42
答案是c
作者: samove    时间: 2015-6-30 22:43
上面有大神已经回复过了,我就顶一个C答案吧
作者: bingyu    时间: 2015-6-30 23:04
短路与 107啦C
作者: 徐家誉    时间: 2015-7-1 00:23
i=1,j=0,a=7    选择C
作者: qxc1281    时间: 2015-7-1 10:17
答案是C
作者: wengjialiang    时间: 2015-7-1 15:11
我觉得果断选择C
作者: fmi110    时间: 2015-7-1 16:32
c 必须的吧
作者: 一口老郭    时间: 2015-7-1 16:56
c没错的吧
作者: kime    时间: 2015-7-1 21:53
当然是c
作者: 慕容旺财    时间: 2015-7-2 18:00
答案选c 考点1:自增运算符和比较大小的优先级 自增在前面 优先级高于比较大小和赋值 考点2:||是第一个条件为true就不用继续运算了
作者: jx5785749    时间: 2015-7-2 21:25
果断C啊!双或,左面条件满足!短路右面不执行!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2