【问题标题】:C code, where i have a value of an integer variable and after a pre-increment operation i need to get the output [duplicate]C代码,其中我有一个整数变量的值,在预增量操作之后我需要得到输出[重复]
【发布时间】:2013-03-12 11:18:44
【问题描述】:
i=2;

i= ++i + ++i + ++i;

printf(i)

请给出解释的输出?
我得到的答案是 12,但应该是 13

【问题讨论】:

  • 我强烈建议您在编写自己的问题之前寻找已经存在的问题。使用 Google 进行搜索。
  • 应该有一个脚本来检测这种重复的枪声和自动回复,(在 C++ 上也是如此)。如果只是偶尔将 var 名称从“i”更改为可能会很好。它永远不是“j”、“index”或“banana”——它总是“i”。
  • 不幸的是,我们确实j++ 以及 a、b、c、p、k、s、u、v、x、y 和z。还有++--,以及前置和后置运算符。 Look here

标签: c pre-increment


【解决方案1】:

根据 C 标准,您的代码的行为是 undefined,因为您不能在同一个表达式中多次使用预增量运算符。输出可以是任何东西。

请参阅this question 的答案以更全面地了解该主题。

【讨论】:

    【解决方案2】:

    虽然行为是未定义的,但在你的情况下它已经被执行了,考虑到解析是从左边开始的,i = 5 + 4 + 3 = 12

    为了解释, 我 = (++i) + (++i) + (++i) 现在 i = 2,所以首先 ++i 扩展为 3 并且 i 变为 i=3 i = (++i) + (++i) + 3

    现在 i = 3,所以 ++i 扩展为 4 并且 i 变为 i=4 i = (++i) + 4 + 3

    现在 i = 4,所以首先 ++i 扩展为 4 并且 i 变为 i=5 i = 5 + 4 + 3

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 1970-01-01
      • 2014-10-17
      • 2011-04-11
      • 2020-09-07
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多