【问题标题】:a=a++ wondering answer of visual studio? [duplicate]a=a++ 想知道 Visual Studio 的答案? [复制]
【发布时间】:2011-12-07 17:51:55
【问题描述】:

可能重复:
is i=i++ truly a undefined behavior?

我只想向我的学生解释 ++ 和 -- 并在 Visual Studio 2010 中向他们展示一些关于他们的代码 我只是在上面测试这段代码

int main(){
   int a=3;
   int b=3;
   a=a++;
   cout<<a<<endl;
   cout<<b++<<endl;
}

我希望两个 cout 都打印 3 但第一个 cout 打印 4 !!! 我在 g++ 中测试它,两个 couts 都打印 3 ...... 怎么了???

【问题讨论】:

  • @TomalakGeret'kal 哈哈,你太刻薄了:-P
  • @TomalakGeret'kal 你打败了我!
  • @Neal:我认为 Tomalak 将成为许多未来 Turbo C++ 程序员的无名英雄,他们甚至不知道是谁将他们从厄运中拯救出来。
  • @KerrekSB 哈哈,看起来就是这样^_^
  • @KerrekSB: 哈哈 正是:) [虽然 sung 会更好]

标签: c++ visual-studio-2010


【解决方案1】:

a=a++ 的行为未定义。如果您想增加a,请改用a++

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      a=a++; 定义不明确。不要使用它。

      【讨论】:

      • 它甚至没有定义不好。
      【解决方案4】:

      您只能在 C++ IIRC 的一个序列点内进行一项分配。所以这是未定义的。下面的演示深入讨论了这个问题http://www.slideshare.net/olvemaudal/deep-c

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 2019-08-28
        • 2017-12-06
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        相关资源
        最近更新 更多