【问题标题】:Why is the output of following C code 10? What I mean is why is printf giving x as output? [duplicate]为什么以下 C 代码的输出为 10?我的意思是为什么 printf 将 x 作为输出? [复制]
【发布时间】:2014-04-12 08:55:33
【问题描述】:

在 Fedora 20 桌面上使用 GCC 编译,以下代码输出 10。

int x=10;
int y=5;
printf("%d",(y,x));

【问题讨论】:

  • 逗号运算符计算为最后一个值
  • @KarolyHorvath 另一个新手对此提出疑问。
  • 大家好,这是真的,我是新来的。因此,如果你们中的任何人都可以向我展示事情是如何运作的,那将是很大的帮助。
  • @AnudeepSamaiya 大多数编写好的错误报告的规则在这里都适用,即使您没有报告错误。例如,您说您发现打印10 的行为很奇怪,但您没有说明原因或您的预期。考虑到打印 10 是正确的行为,这使您的问题难以回答。然后,你邀请人们发布一个随机的“谜题”列表。这不是本网站的工作方式。 stackoverflow 答案是您面临的编程问题的解决方案。问题不是民意调查。这一切都在stackoverflow.com/tour中进行了解释

标签: c


【解决方案1】:

在 C 中,(y,x) 表示评估 xy 并仅返回 x。例如。来自维基百科:

逗号运算符(由记号 , 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。

【讨论】:

    【解决方案2】:

    这是“逗号运算符”(不要混淆
    分隔函数参数时用逗号。)

    “结果”只是最后一部分,但如果其他部分是函数等,
    他们也会被处决。

    【讨论】:

      【解决方案3】:

      在 C (exp1,exp2)

      首先计算exp1,然后计算exp2,并为整个表达式返回exp2的值。

      1. (exp1, exp2) 就像 (exp1 && exp2)exp1exp2 都会 无论exp1 返回什么,总是会被评估。
      2. (exp1, exp2) 类似于 { exp1; exp2; } 但它可以用作 函数调用或赋值中的表达式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 2021-05-13
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 2022-11-27
        • 2020-02-14
        • 2020-03-05
        相关资源
        最近更新 更多