A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 几率收割 中级黑马   /  2015-6-29 23:27  /  1065 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下程序段输出是()
   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

22 个回复

倒序浏览
当然是C了啊
回复 使用道具 举报
我觉得是b
回复 使用道具 举报
果断C啊,双或短路J不参与运算
回复 使用道具 举报
答案应该是c。。。。。。。。。
回复 使用道具 举报
答案是C了
回复 使用道具 举报
选c~
++a>0以后就不判断了
回复 使用道具 举报
(++i > 0) 条件成立, || 短路了,(++j > 0)就不运行了。a++了,所以是C
回复 使用道具 举报
路途 中级黑马 2015-6-30 19:59:39
9#
分析一下,首先++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:34
10#
答案是C,if语句的判断是或运算因为++i是真所以会造成或短路也就是不执行++j,就往下执行a++,所以i的值加1,j没变,a的值加1
回复 使用道具 举报
JJJD 中级黑马 2015-6-30 22:00:57
11#
学习啦。。。。
回复 使用道具 举报
选C ~ ~~
回复 使用道具 举报
答案是c
回复 使用道具 举报
上面有大神已经回复过了,我就顶一个C答案吧
回复 使用道具 举报
短路与 107啦C
回复 使用道具 举报
i=1,j=0,a=7    选择C
回复 使用道具 举报
答案是C
回复 使用道具 举报
我觉得果断选择C
回复 使用道具 举报
c 必须的吧
回复 使用道具 举报
c没错的吧
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马