在 printf 语句中的第一个值之前打印第二个值的原因是啥? [复制]

Posted

技术标签:

【中文标题】在 printf 语句中的第一个值之前打印第二个值的原因是啥? [复制]【英文标题】:What is the reason for printing the second value prior to the first value in printf statement? [duplicate]在 printf 语句中的第一个值之前打印第二个值的原因是什么? [复制] 【发布时间】:2014-03-16 10:00:39 【问题描述】:

以下代码:

void main

    int b=10;
    int a=5;
    printf("%d",(b,a));

这会在执行时给出输出 5。谁能解释一下原因?

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

【问题讨论】:

你为什么要做奇怪的事情? 为什么说“匹配”? 看来这是周一的作业迟到了? 您的代码无法编译。您的 main 不是函数(缺少形式参数,应该返回 int 【参考方案1】:

阅读comma operator。您的 (b,a) 表达式被评估为 5(a 的值)。

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于在 printf 语句中的第一个值之前打印第二个值的原因是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用选择查询为每个唯一的第二个值获取一个值中的最小值?

逗号运算符返回参数列表中的第一个值而不是第二个值?

将地图的第一个和第二个值上传到向量对的第一个和第二个值中

根据对的第二个值查找对向量的上限

定位类中的第一个和第二个值

C# 合并重复列表项并将它们的第二个值求和(2D 对象列表)