在 cout 语句中首先运行什么?(C++17)
What is run first inside a cout statement? (C++17)
例如,我有一个很长的陈述,比如
cout << findCurrent() << "," << findLowest() << "," << findHighest() << "," << findThird()<<"n";
findCurrent()
会像逻辑规定的那样在findLowest()
之前运行吗?
自 C++17 起,这些函数保证从左到右称为,即 首先调用findCurrent()
,然后调用findLowest()
,依此类推。
C++17 标准参考文献: [expr.shift]/4 (指表达式E1 << E2
(:
表达式
E1
在表达式E2
之前排序。
[over.match.oper]/2:(描述重载运算符(
操作数按为内置运算符规定的顺序进行排序。
[介绍执行]/15:
表达式
X
被称为在表达式之前排序,Y
如果每个 值计算以及与表达式X
关联的每个副作用在每次值计算和与表达式Y
相关的每个副作用之前进行排序。
链接到 cpp 首选项摘要
在 C++17 之前,函数调用的顺序是未指定的,这意味着它们可以按任何顺序调用(并且在重复调用时此顺序不需要相同(。
在 C++17 之前,未指定计算顺序。
截至 C++17,需要从左到右进行评估。请参阅M.M的答案以获取标准报价。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- 在C++17中,引用const字符串的语义应该是什么
- 在 C++17 中实现迭代器和const_iterator的正确方法是什么?
- 读取二进制文件的惯用C++17标准方法是什么
- 在 C++17 中表示 std::byte 文字的正确方法是什么?
- c++ 17 中结构自动定义构造函数的规则是什么?
- 追问:C++14/C++17 中的变量到底是什么?
- 在 C++14 中,这种 C++17 倍表达的好选择是什么?
- 在 cout 语句中首先运行什么?(C++17)
- *表[17]的含义是什么?
- 什么是 C++17 中的 constexpr 容器
- 使用C 17处理Unicode的有效,符合标准的机制是什么
- 在 C++17 中为非标准布局类"conditionally-supported""偏移"意味着什么?
- 有什么理由在 C++17 中使用 std::map::emplace() 而不是 try_emplace() 吗?
- 在 C++17 中弃用"std::result_of"的原因是什么?
- 为c++ 17提出的UTF-8字符字面量的意义是什么?
- 什么是契约(c++ 17的提议)
- C++17 引入的评估顺序保证是什么