该程序的输出不是我所期望的:整数交换函数

问题描述 投票:-2回答:1
#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?

c++ function swap
1个回答
0
投票
我不知道你为什么期望10。

  • [最初,x为10,y为20。您打印了x,得到10。
  • 然后,您交换了xy的值。因此,现在x为20,y为10。您已经打印了y,得到10。
  • 然后,您又将它们交换回去。因此,现在x为10,y为20。您已经打印了y,得到20。

  • 最后,再交换一次xy,然后打印一个完全不相关的变量t

这就是全部,真的。该程序将打印20条,因为这就是您要求它执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.