[英]Does the output depend on the compiler?
我有一个代码。 代码打印1236
(g++ 7.5.0)
output 是否取决于编译器? (例如 output 可以是3216
)
#include <bits/stdc++.h>
using namespace std;
int foo(int& x) {
std::cout << ++x;
return x;
}
int main() {
int i = 0;
cout << foo(i) + foo(i) + foo(i) << endl; // 1236
}
不,output不依赖于编译器(模bits/stdc++.h
/stdc++.h 废话)。 三个调用foo(i)
的计算顺序未指定,但这不影响 output:function 调用未交错,因此某些调用会将i
递增到 1,打印并返回它(作为副本),那么另外两个将分配、打印并返回 2,最后一个将执行 3,并且它们的返回值总和为 6。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.