2 qq 34925885 qq_34925885 于 2016.05.11 13:07 提问

C++基础问题,求大神赐教!

在看函数与预处理一章中有一程序;
程序部分如下;
static int a=1;
n=3;
n+=a++ ;
return n;
n+=a++,什么意思,第二次调用函数时a是2吗?

6个回答

baoyihu
baoyihu   2016.05.11 13:17
已采纳

这么基础的问题,;
a++;是计算后赋值,
所以 n+=a++ ;等同于
n+=a;
a++;
我建议你这么写比较好,那种在一行里进行多次计算的写法,早就不流行了.
主要是阅读困难,容易造成理解障碍,程序员的时间是很宝贵的,至少比机器运行的1纳秒要宝贵.

caozhy
caozhy   Ds   Rxr 2016.05.11 13:13

n+=a++,+=的优先级高
所以是
n = n + (a++)
而a++表达式的值是a,后++
所以n = n + a
a = a + 1
明白了么?

qq423399099
qq423399099   Ds   Rxr 2016.05.11 13:18

先要搞清楚运算符的优先级,+=的优先级是要比++低的
但由于是后++,是将之前的值参与计算,然后才自加1
n+=a++ ;相当于先执行n = n + a;然后a自加1
运算符优先级参考:http://blog.csdn.net/nicky_zs/article/details/4053146

yy611653
yy611653   2016.05.11 13:24

这个老师的课件应该会详解n+=a++就是先把a加到n里然后a再自增

ZGZ1002
ZGZ1002   2016.05.11 13:41

n+=a++ 等价于 n=n+a; a++;

herozhangbz
herozhangbz   2016.05.11 13:11

等价于n=n+a;
a=a+1;
运行后n=4;a=2.a++是先计算后赋值的,也就是计算式内的a还是原来的值,计算后a执行++

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!