#include<iostream> #include<algorithm> using namespace std; int i=0; int fun(int n){ static int a=2; a++; return a+n; } int main(){ int k=5; { int i=2; k+=fun(i); } k+=fun(i); cout<<k; return 0; }结果为什么是14
时间: 2023-12-06 08:44:03 浏览: 66
这是因为在代码中定义了两个变量 `i`,一个是全局变量 `i`,一个是在 `main` 函数中的局部变量 `i`。当执行 `{}` 内的语句块时,会优先使用局部变量 `i`,并且 `k` 的值会增加到 7。接着执行 `k+=fun(i)`,此时使用的是全局变量 `i`,并且 `a` 的值在 `fun` 函数中被静态地初始化为 2,然后每次调用 `fun` 函数时 `a` 都会自增 1,所以第一次调用 `fun(i)` 返回 5,第二次调用 `fun(i)` 返回 7,因此 `k` 的最终值为 14。
相关问题
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 排序
您的代码漏掉了大括号,请在sort语句后面加上大括号。另外,您需要加上输出结果的语句。完整的代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end()); // 排序
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
阅读全文