printf(“%d,%d,%d\n”,(a++,b++,c++),b,c)是什么意思

为什么输出3,3,4

int b=3,c=3;
输出1 是输出 逗号表达式 (a++,b++,c++) 的值
逗号表达式 的 值 等于 最右 一个式子 c++ 的 当前 值,就是 c 的当前值(尚未自增)
逗号表达式 里的3个式子 用的是 后缀加,所以 a,b,c 用当前值,出了逗号表达式后再 各自 增加 1。
输出2 是输出 自增 1 后 的 b 值(已自增)
输出3 是输出 c 的当前值 -- 这同编译器编译优化处理有关,它可能仍用原值,也可能已增1。若未增1,则 出了打印语句后 会自增1。
(建议,不要使用这种 带 不确定 因素的 语句。)
--
例子, MS VC++ 5.0
#include<stdio.h>
int main()
{
int a=1,b=3,c=3;
printf("%d, %d, %d",(a++,b++,c++),b,c);
return 0;
}
输出: 3, 4, 3
(不是 3,3,4)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-05

按十进制输出(a++,b++,c++)、b、c三个表达式的值,中间用逗号隔开。

朋友你恍然大悟了?我看未必。请VC++6.0下的结果:

第2个回答  推荐于2017-09-20
printf输出语句执行前, b = 3, c = 3;
执行printf语句时,(a++, b++, c++)逗号表达式执行,并且返回最后一个逗号后的c++的值作为整个逗号表达式的值,而c++返回值为3; 执行完该逗号表达式后,c的值变为4; 接着输出b;接着输出4。
因而输出的结果为3,3,4.本回答被提问者采纳
第3个回答  2015-09-24
就是输出表达式的值啊,
第4个回答  2018-01-09
输出为3,4,4
相似回答