首页 >后端开发 >C++ >是`cout

是`cout

Barbara Streisand
Barbara Streisand原创
2024-12-15 02:17:091004浏览

Is `cout

揭开“cout

在最近的一次采访,一个神秘的编码难题浮出水面:

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

有诱人的选项可供选择,包括 10、01,以及神秘的“未定义行为”,受访者自信地选择了 01,理由是他们对序列点的理解。然而,面试官的回答却让人大吃一惊:正确答案竟然是未定义的。

探索未定义的领域

序列点通常保证在之前完成副作用进入后续评估。有趣的是,所讨论的陈述在参数评估之间不具有任何序列点。这意味着参数“a”可以在参数“cout

C 17 中的一线希望

C 17 中的编码格局已经发生了转变,其中修改了表达评估规则。最新指南明确规定,在移位运算符表达式中,第一个参数(“E1”)的所有计算和副作用都在第二个参数(“E2”)的计算和副作用之前排序。

这一关键调整要求有问题的代码片段输出 01。难以捉摸的未定义行为已被消除,取而代之的是预定结果的确定性。

更深层次的深入探讨 P0145R3 的余烬

对于那些寻求更全面理解的人,技术论文 P0145R3:细化 Idiomatic C 的表达式求值顺序深入研究了修订后的表达式求值顺序的复杂细节,提供了深刻的见解深入了解 C 编码范式的演变。

以上是是`cout的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn