在 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 语句中的第一个值之前打印第二个值的原因是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章