C++中递增运算符的使用疑惑

参考该博主知识点的介绍https://blog.csdn.net/weixin_45856549/article/details/103169599?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1.pc_relevant_aa&spm=1001.2101.3001.4242.2&utm_relevant_index=4。我进行了试验
void main()

{
int x = 5;
//cout << x++ << endl;
cout << 2 * x++ << endl << 3 - ++x;//▲▲▲

int y = 1;
int u = 1;
//int q = 2 * ++y;
//cout << "\nthe value of q = " << q << endl;
cout << endl << 2 * ++y << endl;
//int w = 2 * u++;
//cout << "the value of w = " << w << endl;
cout << 2 * u++ << endl;

}

运行结果

12
-4
4
2

我就想问一下:为什么(2 * x++)显示会是12呢,不应该是10吗?

a++ 是先返回原本的值, 再对a加1
++a 是先对a加1 再返回加1后的值

cout 和printf 一样是从右往左计算表达式.

cout << 2 * x++ << endl << 3 - ++x; 中是 先计算 ++x; x先l加1变成6
再计算 2 * x++ 时x已经是6了, 2*6=12,之后x再加1

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

cout << 2 * x++ << endl << 3 - ++x这一句,执行顺序是:
(1)++x,x变成6
(2)2 *x,结果是12
(3)cout << 2*x,显示12
(4)执行x++,x变成7
(5)执行3-x,结果是-4,显示-4

++在变量前面的时候,先计算++。++在变量后面的时候,最后再计算++

img

img


加加运算符的优先级大于乘号运算符

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632