繁体   English   中英

output 是否取决于编译器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM