- 请问,如下代码中
- #include <stdio.h>
- int main(int argc, const char * argv[])
- {
- int b;
- int a = 10;
- <font color="Red">b = (++a) + (a++);</font>
-
- printf("b =%d\n",b);
- printf("a =%d\n",a);
- return 0;
- }
- 输出结果b=22,a = 12。
- b=22我理解,但是<font color="Red">为什么a的值a = 12而不是a = 10,这个程序中并没有再次定义a的值</font>,这是什么原理?
复制代码 b = ( ++a ) + ( a++);
++a; 和 a++; 在单独的一条语句中 的意思就是: a+=1 也就是 a = a +1;
但是 ++a 的意思是 先加 再使用
a++的意思,是先用再加
打个比方:
int a = 1, b =0;
如果是 b = ++a; 那么 b是等于 2的
如果是 b = a++; 那么 b 是等于1 的
但是上面两条语句任意一条执行完后,也就是;过后跳到下一条语句后 a 都等于 2
LZ可以打一下代码试验一下
|