黑马程序员技术交流社区

标题: 一道考试题都来看看好坑 [打印本页]

作者: 云端的风    时间: 2015-6-12 21:23
标题: 一道考试题都来看看好坑
30.下面程序执行的结果是( )
public static void main(String [] args)
{
        int num=100;
        if(num ++>100);
{
        num =200;
}
        System.out.println(num);
}
A.  100
B.  200
C.  201
D.  101  
你们选什么?  为什么?
作者: lwen    时间: 2015-6-12 21:44
选D,应该是num先和100比较,然后再自加,所以if语句内容就不会被运行
作者: 半月    时间: 2015-6-12 21:45
谁在if后面加;的.
出来我不打死他
作者: wenxueaaa555    时间: 2015-6-12 21:53
B,if后面有分号,不用进行判断,num=200
作者: lwen    时间: 2015-6-12 21:55
lwen 发表于 2015-6-12 21:44
选D,应该是num先和100比较,然后再自加,所以if语句内容就不会被运行

好吧,我错了,终于看清楚了题目,刚才总是在纠结与是先加还是后加的问题,原来呀,真正的问题是那个小小的分号,所以是200
作者: coosea128    时间: 2015-6-12 21:56
if后面有坑啊!!!输出num=200
作者: GoldMan    时间: 2015-6-12 21:59
这个分号不仔细看还真一带而过
作者: 付欢    时间: 2015-6-12 22:01
分号真是个大坑
作者: 十五号的人生    时间: 2015-6-12 22:39
我们真的被坑了
作者: 朱智琳    时间: 2015-6-12 22:40
你发出来我才发现有个分号,应该是200,妹的!
作者: 痞子刘忙    时间: 2015-6-12 22:46
谁加的;
作者: 我的最优解    时间: 2015-6-13 10:55
肯定是B好吧,这出的真奇葩
作者: fyg408224345    时间: 2015-6-13 11:23
半月 发表于 2015-6-12 21:45
谁在if后面加;的.
出来我不打死他

就是嘛,谁在if()后面加分号的,坑人嘛这不

作者: fyg408224345    时间: 2015-6-13 11:24
如果程序没写错,那么执行结果应该是选B。如果if后面不加分号,那么结果选D。
作者: 天涯111    时间: 2015-6-13 11:27
应该是200,在if后面是一个分号,下面的赋值语句不在if这个选择语句中,执行完if后好药执行这个赋值语句,所以是200
作者: Monster    时间: 2015-6-13 11:58
分号坑死人啊
作者: bl141421    时间: 2015-6-13 12:36
有没有分号难道不都是200?      (num ++>100)是true啊
作者: 志行    时间: 2015-6-13 12:40
果然是一道很坑很坑很坑的题啊 啊啊啊
作者: 那些年ii    时间: 2015-6-13 12:44
B,if后面有分号,不用进行判断,num=200
作者: 小囧    时间: 2015-6-13 13:00
bl141421 发表于 2015-6-13 12:36
有没有分号难道不都是200?      (num ++>100)是true啊

num先比较再自增的,(num++>100)是false
作者: 海洋你好    时间: 2015-6-13 13:45
肯定是200啊
作者: 嘎路的米    时间: 2015-6-13 14:31
这真是面试题么?太坑吧,我还以为是D
作者: sanmy_lin    时间: 2015-6-13 14:59
坑的逗号
作者: 愚翁    时间: 2015-6-13 15:14
选B,200,果然要注重细节
作者: 十字天堂    时间: 2015-6-13 15:26
果然被坑了{:3_55:}
作者: 海角秋风    时间: 2015-6-13 16:25
分号真是坑啊,真心没注意。。。
作者: 小虎199406    时间: 2015-6-13 17:17
public static void main(String [] args)
{
        int num=100;
        if(num ++>100);
{
        num =200;
}
        System.out.println(num);
}
if() 后面有分号 判断无意义  所以是200
如果 if 后面没有分号  ,因为++在100后面所以是先进行比较然后再自加;
所以 100>100;false
所以不执行if里面的语句;
然后再进行自加num++
mun =101

作者: Nemo    时间: 2015-6-13 20:42
B啊,那个分号我也是醉了
作者: 小龙编程世界    时间: 2015-6-14 20:00
if后面那个分号是不是楼主写多了:o
作者: SouthKai    时间: 2015-6-14 20:59
我上次考试也被这个题坑了
作者: langxiao505    时间: 2015-6-14 21:14
200!!有个分号在哪里
作者: 日-月    时间: 2015-6-14 21:17
200哈哈哈!!!
作者: 老徐    时间: 2015-6-14 21:18
考试的时候考了,看清了没被坑:)
作者: 繁华落幕    时间: 2015-6-14 21:32
bl141421 发表于 2015-6-13 12:36
有没有分号难道不都是200?      (num ++>100)是true啊

nun++ 与 ++n  是两回事,++在后边是先进行运算比较,然后在进行自增,++在前边,是先进行自增,然后进行比较运算......
作者: 胡亚辉    时间: 2015-6-14 21:32
看错了  选D  
作者: Foundmoon    时间: 2015-6-14 21:34
考的是细心,确实好坑
作者: QQheima    时间: 2015-6-14 22:00
半月 发表于 2015-6-12 21:45
谁在if后面加;的.
出来我不打死他

哈哈哈,笑屎个人
作者: 周周    时间: 2015-6-14 22:19
200,大家都被坑过  
作者: zlpiano    时间: 2015-6-14 22:33
D,if 里面的语句判断完,给出false,传递给 if,同时num自增1,变成101,虽然自后符合条件了,但是可惜已经判断完了,if 里面不会执行
作者: zlpiano    时间: 2015-6-14 22:35
如果分号是故意的,那么答案是200.。。
作者: 杨凯瑞    时间: 2015-6-14 22:42
  if后面加分号了! 所以肯定选b了
作者: 安安安    时间: 2015-6-14 23:03
这个分好有毒。。。
作者: heima591046495    时间: 2015-6-14 23:40
选d,,++在后先参与运算然后自增1
作者: vilion    时间: 2015-6-14 23:44
写程序是一件非常严禁的事
作者: mishisanyi    时间: 2015-6-15 00:16
选D吧,num++执行了,下一个num就是num=num+1值啊
作者: zc强盗    时间: 2015-6-15 00:57
这是我们同样面临的问题
作者: 李俊超    时间: 2015-6-15 09:42
楼主这个题给的有意思,考察了两个基本的知识点:
题如下:
public static void main(String [] args){        //定义int类型变量num,并初始化赋值num=100;
        int num=100;
        //if语句判断(num++>100),该表达式num++在后,先参与运行,后自加1.显然表达式不成立返回false. 此时num=101.
        //另If(num++>100); 相当于if(num++>100){}   本身if后没有任何执行语句.所有这个就相当于num++;
        if(num ++>100);
       //代码块内执行num= 200;是把200重新赋值到num.
          {
        num =200;
           }
        System.out.println(num);//输出num最终值,即200;
}总结:1.混淆点: fi(num++>100); 中的分号;  如果去掉分号;代码块{num=200}不执行,num++自加1后输出值为101;

        2.int的初始化赋值和修改值.

作者: YongBao_Summer    时间: 2015-6-15 10:17
我去。坑死人不偿命的;
作者: meng12    时间: 2015-6-15 11:03
num=200;
作者: bl141421    时间: 2015-6-15 11:14
繁华落幕 发表于 2015-6-14 21:32
nun++ 与 ++n  是两回事,++在后边是先进行运算比较,然后在进行自增,++在前边,是先进行自增,然后进行比较 ...

之前看过一条类似的题,  判断语句是n++==10  所以弄混了




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