我最近在这个网站上遇到了一个关于C++序列点的问题,关于这段代码将输出的内容:
int c=0;
cout << c++ << c;
Run Code Online (Sandbox Code Playgroud)
回答是输出未定义且<<不是序列点,但我仍然想知道为什么它未定义,即使我编译25次,它仍然总是打印01?
小智 6
你问:
为什么即使我编译25次它仍然打印01
答案是因为编译器基本上(但不是完全)确定性 - 给定相同的输入,它们将产生相同的输出.在机器代码方面.并且该机器代码也是确定性的,因此始终输出"01".另一个C++编译器虽然可能以类似的确定性方式生成每次都生成"10"的机器代码.