【问题标题】: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

标签: c


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多