【问题标题】:While running "n=n++", it outputs the original value of 'n' [duplicate]运行“n=n++”时,它输出“n”的原始值[重复]
【发布时间】:2018-05-03 03:55:08
【问题描述】:
int n = 1;
n = n++;
cout<<n<<endl;

output:1

我在谷歌上搜索过。分析称"n = n++" is:First assign n to n, then n add 1.

我不知道为什么它给出的输出是 1,而不是 2。

【问题讨论】:

  • 代码建议使用 C++,但您也有 Java 和 C 的标签。它是哪一个很重要。那么它是什么?
  • 我去掉了Java和C标签,因为这段代码sn-p明显是C++。
  • 一个可能的扩展是int tmp = n; n++; n = tmp;,它产生1。但是,正如其他人评论的那样,扩展是模棱两可的,因为它可能是int tmp = n; n = tmp; n++; ,它会产生你想看到的东西。两种扩展都是可能的,这就是为什么最好不要编写这种模棱两可的代码。
  • 绝对是 C++。在 C++ 中:n += 1;、‘n++;` 和 ++n 都将 n 加一。我认为这就是你想要做的。提高你的问题质量!

标签: c++


【解决方案1】:

此代码是未定义的行为。编译器可以做任何事情,甚至可以让恶魔从你的鼻子里飞出来。要了解更多信息,您可以阅读https://en.wikipedia.org/wiki/Sequence_point

【讨论】:

  • 在哪里可以买到能让恶魔从我鼻子里飞出来的编译器?
  • 我打赌你可以在 nullptr @DawoodibnKareem 找到一个
  • @DawoodibnKareem 看名字,去cout &lt;&lt; string(0);
  • @M.M 我试过了。我现在鼻子酸痛,我的键盘上有一个长着喇叭和干草叉的小红人。救命!
猜你喜欢
  • 2013-07-29
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2013-01-10
  • 2018-08-12
  • 2013-02-20
相关资源
最近更新 更多