gpt4 book ai didi

c++ - 当我总是得到相同的结果时,为什么会出现这种未定义的行为?

转载 作者:太空狗 更新时间:2023-10-29 23:23:02 25 4
gpt4 key购买 nike

我最近在这个网站上遇到了一个关于 C++ 序列点的问题,关于此代码将输出什么:

int c=0;
cout << c++ << c;

回答说输出是未定义的,<<不是序列点,但我还是想知道为什么它是未定义的,即使我编译了25次,它仍然打印01?

最佳答案

“未定义”意味着标准没有指定在那种情况下必须发生什么,所以根据定义,你的编译器所做的任何事情都是正确的。如果它总是打印 01,那很好。如果每次运行时它都打印不同的数字,那也很好。如果它导致猴子从你的 Nose 里飞出来(如 illustrated here ),那也没关系。

您可能不这么认为,但如果发生这种情况,编译器编写者就可以摆脱困境。

[编辑:评论中已经指出规范的引用是“鼻魔”,而不是“鼻猴”。对于任何无意的混淆,我深表歉意。任何有意造成的困惑我都感到自豪并且不为此道歉。 :-)]

关于c++ - 当我总是得到相同的结果时,为什么会出现这种未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com