#include<iostream> using namespace std; void swap(int,int,int,int); int main() { int m=1,n=2; swap(m,n); cout<<m<<' '<<n<<endl; return 0; } void swap(int a,int b,int c,int d) { int t; t=a; a=b; b=t; c=a; d=b; return; }结果发生变化了是为什么
时间: 2023-08-21 14:36:53 浏览: 39
这段代码输出的结果仍然是1和2,因为在swap函数中交换的是形参a和b的值,并没有改变实参m和n的值。因此,即使在swap函数中对c和d进行了赋值操作,也不会改变m和n的值。如果要实现交换m和n的值,可以将swap函数改为如下形式:
```c++
void swap(int &a, int &b) {
int t = a;
a = b;
b = t;
}
```
然后在main函数中调用swap函数:
```c++
int main() {
int m = 1, n = 2;
swap(m, n);
cout << m << ' ' << n << endl;
return 0;
}
```
这样输出结果就是2和1了。
相关问题
#include <iostream> using namespace std; int a=10,b=20; int main(){ cout<<swap(a,b); return 0; }
你的代码中有一个小问题。C++ 中的 swap 函数没有返回值,因此在 `cout<<swap(a,b);` 这行代码中使用了一个无效的输出。如果你想输出交换后的值,你可以修改代码如下:
```cpp
#include <iostream>
using namespace std;
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = 10;
int b = 20;
swap(a, b);
cout << "a: " << a << endl;
cout << "b: " << b << endl;
return 0;
}
```
这段代码将会输出:
```
a: 20
b: 10
```
这样你就可以看到 `swap` 函数成功交换了 `a` 和 `b` 的值。请注意,我们在 `main` 函数中重新定义了 `a` 和 `b`,这样就不会与全局变量冲突。
#include<iostream> using namespace std; void swap(int &x,int &y) { int temp; temp=x; x=y; y=temp; } int main() { cout<<swap(3,5)<<endl; system("pause"); return 0; }这段代码的错误在哪
这段代码有两个错误:
1. `swap` 函数的返回类型应该是 `void`,因为它并不返回任何值。
2. `swap` 函数调用时传递的参数类型应该是变量的引用,而不是常量。因此,函数定义应该改为 `void swap(int& x, int& y)`,而调用应该改为 `swap(a, b)`,其中 `a` 和 `b` 是变量,而不是常量。
正确的代码应该是这样的:
```
#include<iostream>
using namespace std;
void swap(int& x, int& y) {
int temp;
temp = x;
x = y;
y = temp;
}
int main() {
int a = 3, b = 5;
swap(a, b);
cout << "a = " << a << ", b = " << b << endl;
system("pause");
return 0;
}
```