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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜空中的星 中级黑马   /  2014-12-20 21:20  /  1497 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a++和++a如果在单独使用时,效果是一样的


如果在等式中,例子:s=a++和s=++a是不一样的

        int a=1;s=a++   此时的a是先赋值,再+1;所以此时s=1;a=2
        int a=1;s=++a   此时的a是先+1;再赋值,所以此时s=2;a=2



例子:
int x = 1,y = 1;

        if(x++==2 & ++y==2)       
        {
                x =7;
        }
        System.out.println("x="+x+",y="+y);  

分析:在这道题中,x++==2这个条件是不成立的,此时x的值是先赋值,所以1不等于2,但输出的时候x是+1的。,这道题的结果是  x=2 y=2


int x = 1,y = 1;

        if(x++==2 && ++y==2)       
        {
                x =7;
        }
        System.out.println("x="+x+",y="+y);  

分析:&&的运算方式是,当第一个条件为false时,就不再判断第二个条件,所以y不会去执行y++==2
所以结果是   x=2  y=1



int x = 1,y = 1;

        if(x++==1 | ++y==1)       
        {
                x =7;               
        }
        System.out.println("x="+x+",y="+y);
分析:x++==1这个条件是满足的   所以执行x=7;y也执行了y++==1  所以结果是 x=7,y=2



int x = 1,y = 1;

        if(x++==1 || ++y==1)       
        {
                x =7;               
        }
        System.out.println("x="+x+",y="+y);

分析:||短路与的运算方式是   当第一个条件为true时,就不再执行第二个条件,所以结果为x=7  y=1



评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

5 个回复

正序浏览
顶一下,很好的例子。
回复 使用道具 举报
恩 分析的很仔细。简单说就是++在前则先自增再操作,如果在后就先操作在自增
回复 使用道具 举报
这可是相当的仔细啊
回复 使用道具 举报
c++  c先被使用再++
++c  c先++,c再被使用

哪一个在前面就先用哪一个~
回复 使用道具 举报
楼主分析的很详细啊。顶起。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马