查找并编写以下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。
答案 0 :(得分:1)
因为该函数不执行任何操作来更改B
的值(即第二个参数)。因此,它将仅输出以前的内容。
更仔细地看,您的函数具有以下签名:
void Revert(int &Num, int Last=2)
第一个参数是一个引用,因此当您在函数中对其进行更改时,其存储的值(A)将在原始位置被更改。但是,第二个参数Last
仅作为副本接收,因此,当更改本地副本时,原始参数不会被接收。