Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 答案怎么可能是433?_C++ - Fatal编程技术网

C++ 答案怎么可能是433?

C++ 答案怎么可能是433?,c++,C++,这个密码的答案是433。这怎么可能。我想答案是273 int x(int &a,int &b) { a=3; b=4; return a; } int main() { int a=2; int b=7; int c=x(b,a); cout<<a<<b<<c; } intx(int&a,int&b) { a=3; b=4; 返回a; } int main() { INTA=2; in

这个密码的答案是433。这怎么可能。我想答案是273

int x(int &a,int &b)
{
    a=3;
    b=4;
    return a;
}

int main()
{
    int a=2;
    int b=7;
    int c=x(b,a);
    cout<<a<<b<<c;
}
intx(int&a,int&b)
{
a=3;
b=4;
返回a;
}
int main()
{
INTA=2;
int b=7;
int c=x(b,a);

cout您将引用传递给x方法,而不是值的副本,因此在调用方法a和b后将发生变化。这就是结果为433的原因。

在函数中,
c
被分配值3,
a
被分配值4,
b
被分配值
3
。请注意,通过编写代码时,函数中的参数
a
实际上是main中的
b
,反之亦然。

如果您一步一步地遵循函数,注释引用main中的变量,则会发生以下情况:

int x(int &a,int &b) {      // note: pass-by-reference !
    a=3;                    // b = 3
    b=4;                    // a = 4
    return a;               // return 3
}

c = x(b,a);                 // c = 3
cout << a << b << c;        // prints 433
intx(int&a,int&b){//注意:通过引用传递!
a=3;//b=3
b=4;//a=4
返回a;//返回3
}
c=x(b,a);//c=3

cout将输出设置为
433
的原因是

为了避免您混淆,我将
函数x
的参数更改为
inA
inB

int x(int &inA,int &inB)
{
    inA=3;
    inB=4;
    return inA;
}

int main()
{
    int a=2;
    int b=7;
    int c=x(b,a);
    cout<<a<<b<<c;
}
intx(int&inA,int&inB)
{
inA=3;
inB=4;
返回inA;
}
int main()
{
INTA=2;
int b=7;
int c=x(b,a);

coutit的mindscrew代码在不同的名称空间中交换两个变量。只需按照执行/打印值进行操作。顺便说一句,你的预期答案听起来好像不知道“通过引用传递”是什么意思。如果是这样,用谷歌搜索它;)函数
x
中的
a
main中的
a
不同de>。将
main
中的两个
a
s更改为
a1
,将
main
中的两个
b
s更改为
b1
,事情就会更清楚。