这同编译器的处理方法有关。
按语法,
int n,i;
printf("%d \n", (n=i=2,++i,i++) );
得 3。
计算顺序:
这是逗号表达式,逗号表达式的结果 用 最右面一个表达式的结果。
(1)n=i=2; n得2,i得2
(2)++i; 前缀加,表达式里要 先增1再使用,i 变 3
(3)i++; 后缀加,表达式里用原值,出了表达式后才增1。所以 i 不变,等于 3。
逗号表达式 的结果 用 最右面一个表达式的结果,也就是 (3)的结果。
所以 答案 是 3,不是 5 。
这个是逗号表达式(n=i=2,++i,i++)
先计算++i,得到i=3,再计算i++的值也为3,最后输出的是i++的值为3