黑马程序员技术交流社区

标题: 关于i++的实例问题,已被坑了无数次!! [打印本页]

作者: zwb690949450    时间: 2016-4-13 22:51
标题: 关于i++的实例问题,已被坑了无数次!!
int x = 1,y = 1;

if(x++==2 & ++y==2)
{
        x =7;
}
System.out.println("x="+x+",y="+y);  
输出答案不应该是x=7和y=2吗??,为什么编译出来是x=2,y=2啊!!!坑坑坑
作者: dxw    时间: 2016-4-13 22:57
判断的时候x=1吧,判断完之后自增为2  
作者: 李亚东_JAVAEE    时间: 2016-4-13 23:16
if(x++==2 & ++y==2)     //x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。不懂的话再问我
作者: 钱金磊    时间: 2016-4-13 23:32
少年!你该是没好好学吧!x++与++x的场合没分清楚!
作者: NB的笨小孩    时间: 2016-4-14 07:17
这个就是x++和++x的区别
作者: jialianghao    时间: 2016-4-14 10:11
因为x++==2是假,所以不满足条件,但是输出的是x自增后的结果。
作者: psuugdufnm    时间: 2016-4-14 11:03
因为不符合if条件啊   。
作者: Yoyoqiu    时间: 2016-4-14 12:43
楼主对逻辑或再看看  & 要两边都是true 才执行
作者: fanxiaolin    时间: 2016-4-14 13:54
不晓得 写的什么?
作者: 追梦de蜗牛2016    时间: 2016-4-14 14:11
作业题???
作者: leiothrixs    时间: 2016-4-14 19:46
条件表达式为false,所以不执行后面的语句体,输出x=2,y=2
作者: west2179    时间: 2016-4-14 19:55
你为什么不问老师啊.....
作者: ab159263487    时间: 2016-4-14 20:02
因为不符合 if 条件,但是在判断的过程后X和Y都自增 1 ,所以X和Y的值都是2
作者: zwb690949450    时间: 2016-4-14 20:26
嗯嗯,这样说能明白了
作者: yaolv7    时间: 2016-4-14 21:57
我也看不懂{:3_65:}
作者: lrx    时间: 2016-4-14 22:04
x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。
作者: 格城先生    时间: 2016-4-14 22:22
west2179 发表于 2016-4-14 19:55
你为什么不问老师啊.....

其实楼主想说:问老师就没有黑马币啊?
作者: 心若不动    时间: 2016-4-14 22:26
if(x++==2 & ++y==2)     //x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。不懂的话再问我
作者: 大山的伤    时间: 2016-4-14 22:48
x++保留自身,并且++y优先自加,运算完成,x被赋值,所以结果如你所见!




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