C 运算符表达式中的运算符求值顺序
在给定的代码片段中:
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue() << myQueue.dequeue();
和
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue(); cout << myQueue.dequeue();
打印语句的顺序可能看起来出乎意料。但是,了解
在第一个代码片段中,求值的顺序并不重要,因为两者都出队() 调用从队列中检索不同的元素。然而,在第二个片段中,顺序至关重要。
编译器可以按各种顺序计算代码,包括:
auto tmp1 = myQueue.dequeue(); auto tmp2 = myQueue.dequeue(); cout << tmp1 << tmp2;
和
auto tmp1 = myQueue.dequeue(); cout << tmp1 << myQueue.dequeue();
第一个排序将输出“ab”,而第二个排序将输出“ba”。具体输出取决于编译器选择的求值顺序。
这种行为强调了在编写 C 代码时理解运算符求值顺序的重要性,尤其是在处理具有未定义或未排序求值顺序的运算符时。
以上是为什么`cout的顺序的详细内容。更多信息请关注PHP中文网其他相关文章!