理解 C 流中的运算顺序
C 流插入运算符 (
代码示例和问题:
考虑以下内容代码:
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue() << myQueue.dequeue();
此代码打印“ba”而不是预期的“ab”。同样,以下代码:
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue(); cout << myQueue.dequeue();
打印“ab”而不是“ba”。
原因:
打印的顺序使用
中间表示:
编译器将
auto tmp1 = myQueue.dequeue(); auto tmp2 = myQueue.dequeue(); cout << tmp1 << tmp2;
编译器翻译
未指定 tmp1 和 tmp2 的求值顺序。编译器可能会选择先计算 tmp1,然后计算 tmp2,反之亦然。
后果:
因为没有保证计算的顺序,所以使用的打印顺序
结论:
当使用 时对于评估顺序未明确定义的队列或其他数据结构,了解不确定结果的可能性非常重要。为了确保可预测的打印,建议使用显式排序机制,例如单独的以上是为什么使用队列时 C 流插入顺序很重要?的详细内容。更多信息请关注PHP中文网其他相关文章!