是不是++i 只是得出++i的总值是3 但是算过后i的值并不加?也就是还是第一步算出的2?所以到第三还是2?
----------------解决方案--------------------------------------------------------
+ 的结合性是左结合。所以从左向右一步步算。
j = (i++) + (++i) + (i++)
↓ ↓ ↓
参与运算的值 1 3 3
运算后i的值 2 3 4
所j=7,i=4.
可是用VC编译运行后得到结果是 j=6,i=4。这是怎么搞的。
----------------解决方案--------------------------------------------------------
你可以找《C缺陷与陷阱》看下 应该能解决你的问题;
记得上面说对其操作数求值顺序为定义
----------------解决方案--------------------------------------------------------
++i,i++呢可以这样记忆。i=2
首先若j=++i,i值是自加再传递,所以这之后i,j均为3;
再若j=i++,i值先传递再自加,所以之后i=3,j=2。
不知道这样说,明白么?
----------------解决方案--------------------------------------------------------
总之,就是遇到++在前的情况,它++优先级高于++前的运算符,++的i的值同样也是变的,而且返回加过之后的值。
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
+ 的结合性是左结合。所以从左向右一步步算。
j = (i++) + (++i) + (i++)
↓ ↓ ↓
参与运算的值 1 3 3
运算后i的值 2 3 4
所j=7,i=4.
可是用VC编译运行后得到结果是 j=6,i=4。这是怎么搞的。
[此贴子已经被作者于2007-11-17 16:44:55编辑过]
----------------解决方案--------------------------------------------------------
你可以找《C缺陷与陷阱》看下 应该能解决你的问题;
记得上面说对其操作数求值顺序为定义
----------------解决方案--------------------------------------------------------
++i,i++呢可以这样记忆。i=2
首先若j=++i,i值是自加再传递,所以这之后i,j均为3;
再若j=i++,i值先传递再自加,所以之后i=3,j=2。
不知道这样说,明白么?
----------------解决方案--------------------------------------------------------
总之,就是遇到++在前的情况,它++优先级高于++前的运算符,++的i的值同样也是变的,而且返回加过之后的值。
----------------解决方案--------------------------------------------------------