在printf语句中第一个值之前打印第二个值的原因是什么?

时间:2014-03-16 10:00:40

标签: c

以下代码:

void main
{
    int b=10;
    int a=5;
    printf("%d",(b,a));
}

这会在执行时给出输出5。任何人都可以解释它的原因吗?

我期望输出10,因为这是匹配"%d"的第一个值。

2 个答案:

答案 0 :(得分:3)

了解comma operator。您的(b,a)表达式计算为5(a的值)。

另外,养成使用换行符printf结束\n格式控制字符串的好习惯,或者有时候调用fflush(在{{1}之后自动调用) },使用main技术)。请记住,atexit流已缓冲!

答案 1 :(得分:1)

在C中,(b,a)表示“计算b,然后计算并返回”。所以,在你的情况下它实际上只与a相同。