黑马程序员技术交流社区

标题: 又是关于++的问题 [打印本页]

作者: 马嘉    时间: 2014-10-9 19:50
标题: 又是关于++的问题
                int x = 4;
                int y = 5;
                if(x++>4 & ++y>5) {
                        x++;
                }
为什么x=5,不是等于6呀,求大神解答
作者: Captain_Jack_Sp    时间: 2014-10-9 20:00
  1. public class Test3 {
  2.         public static void main(String[] args) {
  3.                  int x = 4;
  4.              int y = 5;
  5.              if(x++>4 & ++y>5) {  //判断条件成立的话
  6.                      x++;                        //x++   就是4+1   等于5
  7.              }
  8.              System.out.println(x);  //等于5
  9.         }
  10.        
  11. }
复制代码

作者: 杨佳名    时间: 2014-10-9 20:10
楼主在if后面加一条else语句改一下x的值。然后自己看看顺序琢磨一下
作者: 香草芭芙    时间: 2014-10-9 20:58
&:        无论左边是true是false,右边都运算.
&:        两边或者一边false, 结果是false, 两边都true ,结果为 true
if(x++>4 & ++y>5) 这句 x和 y 都会运算,   因为 x++  , x 先比较 然后再+, 所以 4>4 不成立,
但是 x 比较完 还是会 x++, 这个是 if(x++>4 & ++y>5) 这个语句的x++, 条件不成立, if 里面的 内容(x++) 不会计算, 所以x = 5
作者: 踏云    时间: 2014-10-9 21:06
因为当x=4时候,if已经停止了循环,只调用了一次x++,所以x=5
作者: hollywood2014    时间: 2014-10-9 21:09
香草芭芙 发表于 2014-10-9 20:58
&:        无论左边是true是false,右边都运算.
&:        两边或者一边false, 结果是false, 两边都true ,结果为 true
if(x ...

说的太好了,想起了C语言二级什么的,尽搞这些++,--的问题

作者: zz_job    时间: 2014-10-9 21:34
这个简单   因为执行到if条件的时候,也就是判断x++>4这一步的时候,x++是先比较再++,所以条件不满足,这时,再对x进行++,此时x=5了,但是也晚了.因为&运算有假即为假==>所以if语句就停止了,也就是后面的x++根本没执行到  这样
作者: 高泳    时间: 2014-10-9 21:43
if里面的语句没有执行
作者: 琳以沫    时间: 2014-10-9 22:15
因为是先进行X>4的判断,在去++的。
作者: 马嘉    时间: 2014-10-10 09:17
香草芭芙 发表于 2014-10-9 20:58
&:        无论左边是true是false,右边都运算.
&:        两边或者一边false, 结果是false, 两边都true ,结果为 true
if(x ...

你的意思是这个for根本就没成立,为什么想x++会先用x>4先比较,然后在自增,而++y,是不是就进行自增在比较,您在跟我说说被
作者: 杨佳名    时间: 2014-10-10 10:45
马嘉 发表于 2014-10-10 09:17
你的意思是这个for根本就没成立,为什么想x++会先用x>4先比较,然后在自增,而++y,是不是就进行自增在比 ...

++在前 表示先加后用。++在后 表示先用后加。
作者: zhappy    时间: 2014-10-10 10:50
判断以后,i就加了一,但是条件不满足,if语句不执行,所以i=5




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