For example, this code compiles (g++ 13.1.0) and gives me output "Sum is 20":
#include <iostream>
using namespace std;
void add (int x, int y, int sum);
int main(){
int x = 10, y = 10;
const int sum = 0;
add (x, y, sum);
return 0;
}
void add (int x, int y, int sum) {
sum = x + y;
cout << "Sum is " << sum << endl;
}
我期望汇编者抱怨,要么试图将固定价值传递给在职能范围内被视为非同寻常的东西,要么没有宣布<代码>sum为add
。 我认为,我理解这里发生的一切——我造就一个固定变量的非固定副本。 我很奇怪,为什么允许这种行为。