user-0 提问: i++,i--,++i,--i 求解释

回复:
user: user-1
content: http://bbs.csdn.net/topics/370153775 建议看看这个帖子

user: user-2
content: 引用 16 楼 u013320991 的回复:[quote=引用 12 楼 jiandingzhe 的回复:] [quote=引用 10 楼 u013320991 的回复:] int  a = 1; //  ++a  同等  a = a + 1,  a += 1 //  - -a  同等  a = a - 1,  a -= 1 //  a++  同等  a = a + 1,  a += 1 //  a- -  同等  a = a - 1,  a -= 1 a + a - - // 同等  a + a 之后  a=a- 1 a + --a   // 同等  a=a- 1之后  a + a 等同个毛啊啊啊啊啊。抓狂中。 看置顶贴……[/quote]   的确是同等, 只是在进行运算时,  符号在后面的是先使用前面的, 再做后面的符号运算 例如:  a = 1;  c = 2;   a = a + c++;  // 先执行这步 a = 1 + 2;   c = c + 1;] 而  a = a +  ++c; c = c+1; 先执行 a = 1 + 3[/quote] 你这个操作没有在一个表达式里多次读写同一个值，和楼主的情况是不一样的。

user: user-3
content: 引用 16 楼 u013320991 的回复:的确是同等, 只是在进行运算时,  符号在后面的是先使用前面的, 再做后面的符号运算 例如:  a = 1;  c = 2;   a = a + c++;  // 先执行这步 a = 1 + 2;   c = c + 1;] 而  a = a +  ++c; c = c+1; 先执行 a = 1 + 3 未定义行为，你贴出一个编译器的结果不能说明任何问题。

user: user-4
content: 引用 12 楼 jiandingzhe 的回复:[quote=引用 10 楼 u013320991 的回复:] int  a = 1; //  ++a  同等  a = a + 1,  a += 1 //  - -a  同等  a = a - 1,  a -= 1 //  a++  同等  a = a + 1,  a += 1 //  a- -  同等  a = a - 1,  a -= 1 a + a - - // 同等  a + a 之后  a=a- 1 a + --a   // 同等  a=a- 1之后  a + a 等同个毛啊啊啊啊啊。抓狂中。 看置顶贴……[/quote]   的确是同等, 只是在进行运算时,  符号在后面的是先使用前面的, 再做后面的符号运算 例如:  a = 1;  c = 2;   a = a + c++;  // 先执行这步 a = 1 + 2;   c = c + 1;] 而  a = a +  ++c; c = c+1; 先执行 a = 1 + 3

user: user-4
content: 引用 10 楼 u013320991 的回复:int  a = 1; //  ++a  同等  a = a + 1,  a += 1 //  - -a  同等  a = a - 1,  a -= 1 //  a++  同等  a = a + 1,  a += 1 //  a- -  同等  a = a - 1,  a -= 1 a + a - - // 同等  a + a 之后  a=a- 1 a + --a   // 同等  a=a- 1之后  a + a  的确是同等, 只是在进行运算时,  符号在后面的是先使用前面的, 再做后面的符号运算 例如:  a = 1;  c = 2;   a = a + c++;  // 先执行这步 a = 1 + 2;   c = c + 1;] 而  a = a +  ++c; c = c+1; 先执行 a = 1 + 3

user: user-5
content: VC6.0是 8 7 8 8 不错，没必要纠结这样的问题，lz实在想知道就看看楼上的地址吧，那是很久以前的一个置顶帖

user: user-4
content: int  a = 1; //  ++a  同等  a = a + 1,  a += 1 //  - -a  同等  a = a - 1,  a -= 1 //  a++  同等  a = a + 1,  a += 1 //  a- -  同等  a = a - 1,  a -= 1 a + a - - // 同等  a + a 之后  a=a- 1 a + --a   // 同等  a=a- 1之后  a + a

user: user-6
content: http://bbs.csdn.net/topics/370153775  学到东西了！

user: user-7
content: 楼主搞这个有什么意思…………。

user: user-8
content: http://bbs.csdn.net/topics/370153775

user: user-0
content: 真是谢谢各位

user: user-9
content: 引用 1 楼 user-15 的回复:我这边测试(vs2012)是 8 8 7 8 哦，看来跟编译器有关系，其实这个问题早就在论坛里讨论n次了，不需要去纠结  我测试vs2008是 8 8 8 8  看来确实不需要再纠结这个问题了。  以后编程时，尽量避免这样使用就行了。

user: user-10
content: 引用 2 楼 starytx 的回复:看看这个置顶帖 http://bbs.csdn.net/topics/370153775  强烈建议版主把置顶帖的标题修改下, 加入 ++i, --i 这样的东西, 让其他人一看就知道是在说这个问题.  现在的标题难让新手知道是在讲 ++i这类的东西.

user: user-11
content: 来这里发这样的贴 能看置顶贴？ 楼主真无聊

user: user-12
content: 这 真的是个世界性难题！

user: user-13
content: printf("%d\n%d\n%d\n%d\n", ++i, --i, i++, i--); 标准没有规定这里面的++i、--i、i++、i--先计算哪一个，实际项目中避免写出这样的代码就可以了。

user: user-14
content: 看看这个置顶帖 http://bbs.csdn.net/topics/370153775

user: user-2
content: 引用 10 楼 u013320991 的回复:int  a = 1; //  ++a  同等  a = a + 1,  a += 1 //  - -a  同等  a = a - 1,  a -= 1 //  a++  同等  a = a + 1,  a += 1 //  a- -  同等  a = a - 1,  a -= 1 a + a - - // 同等  a + a 之后  a=a- 1 a + --a   // 同等  a=a- 1之后  a + a 等同个毛啊啊啊啊啊。抓狂中。 看置顶贴……

user: user-15
content: 我这边测试(vs2012)是 8 8 7 8 哦，看来跟编译器有关系，其实这个问题早就在论坛里讨论n次了，不需要去纠结