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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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啊!!!坑坑坑

18 个回复

倒序浏览
判断的时候x=1吧,判断完之后自增为2  
回复 使用道具 举报 1 0
if(x++==2 & ++y==2)     //x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。不懂的话再问我
回复 使用道具 举报
少年!你该是没好好学吧!x++与++x的场合没分清楚!
回复 使用道具 举报
这个就是x++和++x的区别
回复 使用道具 举报
因为x++==2是假,所以不满足条件,但是输出的是x自增后的结果。
回复 使用道具 举报
因为不符合if条件啊   。
回复 使用道具 举报
楼主对逻辑或再看看  & 要两边都是true 才执行
回复 使用道具 举报
不晓得 写的什么?
回复 使用道具 举报
作业题???
回复 使用道具 举报
条件表达式为false,所以不执行后面的语句体,输出x=2,y=2
回复 使用道具 举报
你为什么不问老师啊.....
回复 使用道具 举报
因为不符合 if 条件,但是在判断的过程后X和Y都自增 1 ,所以X和Y的值都是2
回复 使用道具 举报
zwb690949450 来自手机 中级黑马 2016-4-14 20:26:20
14#
嗯嗯,这样说能明白了
回复 使用道具 举报
我也看不懂{:3_65:}
回复 使用道具 举报
lrx 中级黑马 2016-4-14 22:04:33
16#
x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。
回复 使用道具 举报
west2179 发表于 2016-4-14 19:55
你为什么不问老师啊.....

其实楼主想说:问老师就没有黑马币啊?
回复 使用道具 举报
if(x++==2 & ++y==2)     //x++是先赋值后自增,所以和2比较的是1,虽然不符合if条件,但还是会自增1的,即x=2,因为&的前后都要执行,所以y也会自增1,即y=2。不懂的话再问我
回复 使用道具 举报
x++保留自身,并且++y优先自加,运算完成,x被赋值,所以结果如你所见!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马