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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

发现论坛里有不少人对运算符 ++ -- (前后)运算不是太理解.

                int x = 2;
                x = 2+x++ + ++x+x++ + ++x+x++;
    运算后x=24;

   不借助电脑运算,手写运算步骤,并且运算结果x=24. 说明你对++ --(前后的运算)有一个深刻的理解.

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

10 个回复

倒序浏览
- -脑补结果,确实是24- -。。。。
回复 使用道具 举报
x = 2+x++ + ++x+x++ + ++x+x++;
x=2 + 2      +     4+4    +      6+6;

x++是先赋值,再+1,而++x是先+1,再赋值.
如第一个x++ ,原来int x=2;现在,先赋值x=2,再++,就 变成了x=3;
再下一个++x,那么是x=3+1,赋值x=4,以此类推

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
我觉着你这道题考的不是x++和++x的理解有多深刻,而是一个人他数出一行乱码中有多少个+号的能力。   
x = (2+(x++)) + ((++x)+(x++)) + ((++x)+(x++));
你这样写可以么?
x = (2+(x++)) + ((++x)+(x++)) + ((++x)+(x++));
结果        1                         2    3                        4    5
x1=2
x2=4
x3=4
x4=6
x6=6

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
这道题的关键在于运算符(x++)(++x)的正确理解和应用,要仔细观察表达式中的各元素,并且正确区分开各个元素,最后才是运算
回复 使用道具 举报

                int x = 2;
                x = 2+x++ + ++x+x++ + ++x+x++;

这道关键在  x++  和  ++x   和 代码运算完 x的值是多少?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
qqwwdr 中级黑马 2014-2-28 21:12:27
7#
我是来凑热闹的,围观数++
回复 使用道具 举报
在C/C++里结果与编译器相关,java里应该是24
回复 使用道具 举报
搞了40多分钟终于明白了
回复 使用道具 举报
twtzhongxin 发表于 2014-2-28 21:26
在C/C++里结果与编译器相关,java里应该是24

终于有个懂运算的人,这要看编译器对算术表达式的结合顺序,是从左还是从右

x++ vs ++x参与含有x的运算时,后者x多参与一次应该都懂
等式右边的表达式在Java中,可快速计算:1.总共3次x++ 和2次++x
2.如果将3次x++替换为3次++x(或者相反),则表达式形式统一,方便口算
3.统一形式后,口算x = 2 + (++x)+(++x)+(++x)+(++x)+(++x); //(假设编译器默认从左)
显然,这是一个等差数列求和 x = 2+3+4+5+6+7 =27
4.由于3次++x替换相当于多加了3,故愿结果=27-3
回复 使用道具 举报
这个加加 减减 可以这么简单理解:x在内存里传值是 ++x 先加后传值,x++先传值再加。(x--,--x)也是一样,两个动作(运算,传值)理解先后就很容易了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马