#include<iostream>
void func( int& a, int& b )
{
int t = a;
a = b;
b = t;
}
int main()
{
int x = 10;
int y = 20;
int t = 5;
func( x , x );
std::cout << x << "\n";
func( x , y );
std::cout << y << "\n";
func( y , x );
std::cout << y << "\n";
func( x , y );
std::cout << t << "\n";
return(0);
}
我最初预期输出是
10
10
10
5
但是当我运行代码时,输出是
10
10
20
5
为什么第三个数字是20而不是10?
x
为10,y
为20。您打印了x
,得到10。x
和y
的值。因此,现在x
为20,y
为10。您已经打印了y
,得到10。然后,您又将它们交换回去。因此,现在x
为10,y
为20。您已经打印了y
,得到20。
x
和y
,然后打印一个完全不相关的变量t
。这就是全部,真的。该程序将打印20条,因为这就是您要求它执行的操作。