2020-01-30 13:40发布
小德GD 发表于 2013-4-26 00:46 但用VC6.0测确实是4,4,4,3
printf("%d,%d,%d,%d",i,i++,i+=j,++j);
最多设置5个标签!
唉......VC 的结果既然是这样, 我就给解释下吧.
首先从右往左:
++j 后 j 变成了 3, 注意前加操作是先自增后赋值.
i += j 后 i 变成了 1 + 3 = 4;
i++ 时, 由于后加操作是先赋值后自增, 所以, i 还是 4.
i, 当然也是 4, 因为 , 号不是序列点.
如果你用 GCC 的话, 结果会不一样, 他的前加后加操作有自己的理解和规定(不同版本可能也不一样).
例如++j, i++都是在 i += j; 之前完成, 而且产生副作用. 这时 i+= j; 后 i 的值是 5. 第一个 i 也是 5.
如果你用 Borland-C++ 结果可能又不一样. 别纠结了.
一周热门 更多>