这个输出如何来的。说明(家庭作业帮助)

时间:2019-04-01 18:41:44

标签: c++

查找并编写以下C ++程序代码的输出: 注意:假定程序中已包含所有必需的头文件。

void Revert(int &Num, int Last=2)
{
 Last=(Last%2==0)?Last+1:Last-1;
 for(int C=1; C<=Last; C++)
 Num+=C;
}

void main()
{
 int A=20,B=4;
 Revert(A,B);
 cout<<A<<"&"<<B<<endl;
 B--;
 Revert(A,B);
 cout<<A<<"#"<<B<<endl;
 Revert(B);
 cout<<A<<"#"<<B<<endl;
}

答案:35&4

38#3

38#9

在第一个中,为什么B是4而不是5。

1 个答案:

答案 0 :(得分:1)

因为该函数不执行任何操作来更改B的值(即第二个参数)。因此,它将仅输出以前的内容。

更仔细地看,您的函数具有以下签名:

void Revert(int &Num, int Last=2)

第一个参数是一个引用,因此当您在函数中对其进行更改时,其存储的值(A)将在原始位置被更改。但是,第二个参数Last仅作为副本接收,因此,当更改本地副本时,原始参数不会被接收。