在看函数与预处理一章中有一程序;
程序部分如下;
static int a=1;
n=3;
n+=a++ ;
return n;
n+=a++,什么意思,第二次调用函数时a是2吗?
这么基础的问题,;
a++;是计算后赋值,
所以 n+=a++ ;等同于
n+=a;
a++;
我建议你这么写比较好,那种在一行里进行多次计算的写法,早就不流行了.
主要是阅读困难,容易造成理解障碍,程序员的时间是很宝贵的,至少比机器运行的1纳秒要宝贵.
等价于n=n+a;
a=a+1;
运行后n=4;a=2.a++是先计算后赋值的,也就是计算式内的a还是原来的值,计算后a执行++
n+=a++,+=的优先级高
所以是
n = n + (a++)
而a++表达式的值是a,后++
所以n = n + a
a = a + 1
明白了么?
先要搞清楚运算符的优先级,+=的优先级是要比++低的
但由于是后++,是将之前的值参与计算,然后才自加1
n+=a++ ;相当于先执行n = n + a;然后a自加1
运算符优先级参考:http://blog.csdn.net/nicky_zs/article/details/4053146
这个老师的课件应该会详解n+=a++就是先把a加到n里然后a再自增
n+=a++ 等价于 n=n+a; a++;