老牛来学习 发表于 2020-6-26 17:44:04

C语言逗号运算符和自增自减运算符

#include <stdio.h>
#include <math.h>

int main()
{
      int a = 8;
      int b = 9;
      printf("%d,%d",(a++,++b),b--);
      return 0;
}

上面这段代码我的思路是:
先计算括号内的逗号表达式从左向右执行,a++之后还是8,++b之后b为10,所以第一个输出为10,之后执行b--,执行之后也是10;
所以最后结果是10,10;
哪里出错了,最后是如何输出9,9的?

永恒的蓝色梦想 发表于 2020-6-26 19:14:30

这种问题没什么意义。
C 语言参数从右往左入栈,也就是先算 b--,再算 ++b。

405794672 发表于 2020-6-26 19:27:16

从右往左算。先b--。再算括号里的。

SHRS23 发表于 2020-6-26 20:07:10

这个问题在论坛里出现过很多次了,这是以前回答过的答案,供你参考

https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=155919&pid=4343099
页: [1]
查看完整版本: C语言逗号运算符和自增自减运算符