c++ - 从函数返回引用并修改它

标签 c++ reference

#include<iostream>
int& f(){
 static int x = 0;
 x++;
 return x;
}

int main(){

  f() += 1; //A

 f() = f() + 1; //B
 std::cout << f();
}

以上代码在 gcc 上输出 6,在 MSVC 上输出 5。现在,当我将 AB 修改为 f()=f() 时,我在两个编译器上都得到了 5。这有什么大不了的?行为是否未定义。如果是,为什么?

最佳答案

它是未定义的,因为在这段代码中:

f() = f() + 1;

未定义对 f() 的哪个调用先发生。

关于c++ - 从函数返回引用并修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430981/

相关文章:

c++ - 如何在 CUDA C++ 中生成 XML 文档文件?

c++ - 引用指针问题

perl - 如何引用 Perl 子例程?

c# - Visual Studio 2013 项目引用另一个带有外部库的项目

c++引用外部类内部的内部类

c# - ValueType 堆栈空间用完

C++ 随机数生成 : Generate cos squared function

c++ - 是否可以在具有相同图像的多个设备上生成重复的 UUID(GUID)?

c++ - 使用预定义字符串和参数从宏构建的函数名称

c++ - 如果一个数字是回文数并且可以被它的所有数字整除