| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1316 人关注过本帖
标题:有关C的自增和自减的复和运算..求详细解释!谢谢!
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
回复 20楼 FlynnLan
如 int i, j = 1; i = j++ + ++j + j; 编译器只保证在下一个语句前j的值已经被自增2,但是当前表达式返回的值由不同实现决定。这种问题书上应该讲得很清楚啊,LZ多去看看书吧。

My life is brilliant
2011-06-08 21:21
lovejj23
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2011-4-17
收藏
得分:1 
做了点小测试 如果b=(++a)+(++a);的话结果会是8,这说明在;之前a的值是随后面的语句改变的,由此可见b=(++a)+(--a)+(a++);应该是2+2+2 因为本来++a之后的a会随着--a之后的a而改变
下面的那个b=3+2+2这个比较容易理解吧
2011-06-09 16:30
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
这种代码能免则免
2011-06-09 18:20
gysd
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2011-6-1
收藏
得分:0 
好像不同的编译器得到的结果不一样啊
2011-06-09 20:54
Qingtian_2
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:50
专家分:96
注 册:2011-3-9
收藏
得分:6 
我具体给你演示一下:
(1) 首先,给a赋初值2,此时a—>2(此标记表示存a变量的内存中内容为整值2)
(2)b=(++a)+(--a)+(a++),注意变量b在左边,这个计算过程是先计算玩右边表达式的值,最后再赋过去,计算表达式的话就要注意a变量对应值的变化(从内存内容考虑),首先a左加,a变为3,然后a左减,a为2,最后a右加计算完右边表达式值之前a值为2不变,然后注意了!!!将三个括号中不论是左加右加或左自减右自减的表达式都看成是其含有的那个变量,即为a(就是把++a,--a,a++都看成是a,为2),加完为6;至于a,在完成赋值之后,其自增1。。。
这种题,即单个变量的自增自减的加减运算,先从那个变量的变化分析,最后注意计算是用变量在此步的终值(最后的结果)参与运算的。

写的很绕,但是应该能看懂,这个也是我自己总结的(经得住考验的,嘿嘿),希望对你有帮助~
2011-06-09 23:04
qianyou
Rank: 3Rank: 3
来 自:江西南昌
等 级:论坛游侠
帖 子:76
专家分:189
注 册:2011-3-25
收藏
得分:0 
用这种语句真是没有必要,但是LZ可以去慢慢推!不难的,这种的运算就是从左边开始自加或自减的....
2011-06-09 23:38
a9580643
Rank: 2
来 自:江西九江
等 级:论坛游民
帖 子:60
专家分:59
注 册:2011-4-21
收藏
得分:1 
自增和自减把如果它放在前面就是先把原有值或者变量值加1或减1在使用。
放在后面的话,就是先使用此变量再加1
不过最终变量里面的值都是一样的,只是使用此变量的时候有差距。

花有重开日,人无在少年。
2011-06-10 03:45
快速回复:有关C的自增和自减的复和运算..求详细解释!谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021597 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved