C++ 从函数返回引用并对其进行修改 #包括 int&f(){ 静态int x=0; x++; 返回x; } int main(){ f()+=1;//A f()=f()+1;//B std::cout

C++ 从函数返回引用并对其进行修改 #包括 int&f(){ 静态int x=0; x++; 返回x; } int main(){ f()+=1;//A f()=f()+1;//B std::cout,c++,reference,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(); } 没有定义首先调用f()的是哪一个。你不认为这是未指定的行为吗?即使我们有一个本身就是序列点的函数调用,x的值是否在两个序列点之间被多次修改?Samuel好的,未指

未定义,因为在此代码中:

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

int main(){

  f() += 1; //A

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

没有定义首先调用f()的是哪一个。

你不认为这是未指定的行为吗?即使我们有一个本身就是序列点的函数调用,x的值是否在两个序列点之间被多次修改?Samuel好的,未指定,如果你愿意的话-我不能再进入那个参数了。
f() = f() + 1;