黑马黄武先 发表于 2014-8-6 00:04
定义变量的时候已经赋值给i了,i就是0,然后你下面又搞个,i=(i++)不就是0++么?打印结果当然是0啊! ...
fantacyleo 发表于 2014-8-6 00:07
你加不加括号都一样。Java语言规范规定:赋值语句=右边的表达式必须先计算完毕之后才会将值赋给=左边的变量 ...
Faith- 发表于 2014-8-6 00:16
++不是自增运算吗,0++不就是0+1吗
fantacyleo 发表于 2014-8-6 00:36
我明白了,你糊涂的原因不是优先级,而是对++的误解。++有两种形式:
1. 前缀 如++i
2. 后缀 如i++
dreamseekerkun 发表于 2014-8-6 00:40
不是只有一个i吗,即使先赋值在运算,那么最后i应该是1啊,只有一个啊,一说,我也有点晕了 ...
Faith- 发表于 2014-8-6 00:16
++不是自增运算吗,0++不就是0+1吗
黑马黄武先 发表于 2014-8-6 01:15
不是的,你缺少表达式了,这怎么能+1呢!!
fantacyleo 发表于 2014-8-6 00:36
我明白了,你糊涂的原因不是优先级,而是对++的误解。++有两种形式:
1. 前缀 如++i
2. 后缀 如i++
Faith- 发表于 2014-8-6 07:56
您看昂 按您说的这样如果先把 i 的值赋值给等号左边,然后在执行i+1的动作,那最后输出 i 的值不就是1 ...
fantacyleo 发表于 2014-8-6 10:26
我没说先把i赋值给左边再+1,你再仔细看我的两段原话:
赋值语句=右边的表达式必须先计算完毕之后才会将 ...
dreamseekerkun 发表于 2014-8-6 11:09
int i =0;
if(i==i++&&i==1)
System.out.println(i);
赋值语句=右边的表达式必须先计算完毕之后才会将值赋给=左边的变量。所以必须等i++的自增效果完成,且i++表达式的值0计算完毕之后,才会将i++的值0赋值给=左边的i,因此i最后是0
fantacyleo 发表于 2014-8-6 11:22
还是没认真看我原话:
无标题.jpg (100.78 KB, 下载次数: 11)
fantacyleo 发表于 2014-8-6 11:22
还是没认真看我原话:
Faith- 发表于 2014-8-6 07:44
缺少什么表达式?? 这个程序有错误?
java.jpg (38.56 KB, 下载次数: 6)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |