【问题标题】:Order of outputting with cout output streamcout 输出流的输出顺序
【发布时间】:2013-07-21 16:27:00
【问题描述】:

我正在尝试运行这个简单的代码

int a=0;
cout<<a<<a++;

但输出不是我所期望的

10

我希望“00”和a=1,为什么答案不同?

【问题讨论】:

  • 我已经回答了,但我敢打赌这是重复的。
  • Asked just few hours ago,基本相同。也可以点击那里发布的链接。

标签: c++ output cout


【解决方案1】:

你期望什么?或者更正确地说,你错了 期待任何东西:你正在修改一个变量,并访问它 出于确定要写入的值以外的原因,没有 干预序列点,因此代码具有未定义的行为。 它可能输出“10”,它可能输出“01”,或者它可能输出 “42”,甚至崩溃。

【讨论】:

  • 你说的是 cout
  • @FlorisVelleman 可能是。未定义的行为实际上可能是对宇宙的一个很好的答案。 (当然,未定义的行为也可能会向您所有的同事发送一封电子邮件,邀请他们在酒吧喝酒,对您。或者向您的老板发送一封侮辱性的电子邮件,告诉他您对他的真实看法。或者生成一个从您的帐户银行转账到编译器编写者的帐户。)
【解决方案2】:

C++ standard 没有指定子表达式的执行顺序

除非另有说明,个别操作数的求值顺序 单个表达式的运算符和子表达式,以及顺序 哪些副作用发生,未指定...

【讨论】:

    【解决方案3】:

    这很简单...根据我在 C++ 中的知识,任何语句的执行顺序都是从右开始...在 cout

    【讨论】:

    • 某些运算符的关联性是从右到左,但不是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多