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

为什么是`cout

Patricia Arquette
发布: 2024-12-15 14:05:17
原创
216 人浏览过

Why is `cout

未定义的行为:理解 cout

在 C 中,必须理解未定义行为的概念。未定义行为是指程序的行为未由 C 标准指定,从而导致不可预测的结果的情况。

考虑以下语句:

cout << a++ << a;
登录后复制

这里,我们有一个序列涉及增量运算符 ( ) 和插入运算符 (

序列点是代码中编译器保证所有副作用都已发生的特定点。然而,在上面的语句中,a 和 a 的计算之间没有顺序点。这意味着标准未指定这些操作的执行顺序。

因此,此语句的输出可能会因实现而异。在某些情况下,输出可能是“01”,而在其他情况下,输出可能是“10”。但是,该标准不保证会发生哪种情况,从而导致行为未定义。

C 17 Update

需要注意的是,管理 C 中表达式求值的规则已在 C 17 中更新。在 C 17 中,以下规则适用于移位运算符表达式,例如 >:

“在移位运算符表达式 E1>E2 中,E1 的每个值计算和副作用都在 E2 的每个值计算和副作用之前排序."

此规则消除了原始语句中未定义的行为。在 C 17 中,语句 cout

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板