设变量定义为整型,则表达式n=i=2,++i,i++的值为5

2024-12-04 12:35:01
推荐回答(2个)
回答1:

这同编译器的处理方法有关。

按语法,
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 。

回答2:

这个是逗号表达式(n=i=2,++i,i++)
先计算++i,得到i=3,再计算i++的值也为3,最后输出的是i++的值为3