我是这样理解的,i++和++i运算结束后,i都为i+1,不过i++和++i的表达式的值不同,
以下是引用lxsjzbd在2013-4-1 09:39:45的发言:
我是这样理解的,i++和++i运算结束后,i都为i+1,不过i++和++i的表达式的值不同,
我是这样理解的,i++和++i运算结束后,i都为i+1,不过i++和++i的表达式的值不同,
你看j=i++这一表达式,该行执行完毕后,j是i变化前的值,而j=++i是等于i变化后的值,这两个算符的区别在这里。翻译如下:
j=i++
j=i; i=i+1;
j=++i
i=i+1; j=i;
这就是所谓的前加和后加,区别在i=i+1在前还在是后。只要你理解这个原理,心中默想编译器会做这种代码展开,就会明白,当编译器遇到诸如j=(i++)+(++i)这类语句时,它将会如何无所适从,事实上C标准并没有规定编译器遇到这种代码应该如何操作,各种编译器都有自己的处置权,这就是“未定义行为”,没有答案的——这里解释了为什么我要封禁这类问题的原因,任何试图解释这类问题的答案都是错的,不要问、不要答,更不要写出这种代码。
[ 本帖最后由 TonyDeng 于 2013-4-1 09:47 编辑 ]