【问题标题】:prefix/suffix increment [duplicate]前缀/后缀增量[重复]
【发布时间】:2012-10-03 11:39:06
【问题描述】:

可能重复:
Post Increment and Pre Increment concept?

谁能明确解释前缀增量与后缀增量有何不同?

也有人可以解释为什么这个输出为 6 吗?

i=1;
cout << ++i + ++i;

还有为什么这会给出 4

i = 1;
cout << ++i + i++;

以及为什么这会产生 true

i = 0;
cout << (i++ || i++)

【问题讨论】:

  • 案例 1 我认为应该是 5 而不是 6。
  • 我认为您可能会受益于阅读更多有关 c/c++ 的背景知识。您指定的将多个增量应用于同一变量的代码是未指定的行为。这意味着编译器可以做它想做的事。这并不总是您所期望的。
  • 为什么要编写需要挠头才能弄清楚发生了什么的代码?只会给你自己或其他程序员带来未来的问题。代码应该是可读的。
  • 由于这个问题涉及序列点和未定义的行为,我认为这是一个更好的副本:stackoverflow.com/questions/949433/…

标签: c++ c


【解决方案1】:

1) 很明显,“++i”首先递增变量,而“i++”随后递增。

2) 不太明显的是,将中缀递增/递减与对同一变量的其他操作混合的复杂表达式可能会引入未定义的行为

我同意:线程 Post-increment and Pre-increment concept? 解决了这个问题。

【讨论】:

    【解决方案2】:

    前缀++i 和后缀i++ 运算符会影响语句的计算顺序。使用前缀++ii 的值会递增,这就是所使用的。但是使用后缀i++,会使用i 的原始值,然后对该行之后的任何内容递增。

    【讨论】:

    • “比较”是什么意思?
    • 他的意思是,i++编译器先加后加,++i编译器先加后加
    • 重写它,以便(希望)更清楚。
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2018-09-08
    • 2017-09-01
    • 1970-01-01
    • 2014-04-30
    • 2017-12-12
    • 2014-08-11
    相关资源
    最近更新 更多