Программа:
#include <iostream>
using namespace std;
void location(int &x, int y=4)
{
y+=2;
x+=y;
}
int main()
{
int px=10,py=2;
location(py);
location(px,py);
cout << px<<" "<< py;
return 0;
}
Вывод:
20 8
Process returned 0 (0x0) execution time : 0.312 s
Press any key to continue.
1) как получить выходные значения как 20 и 8.
location(py); //y+=2; is 6 ------ 1
//py+=y; is 8
после этой строки py содержит 8.
location(px,py); //y+=2; is 10 ------- 2
//px+=y; is 20
после этой строки px содержит 20;
, поэтому, вывод равен 20 8
2 ) когда кто-то комментирует строку кода (px, py)
Когда вы комментируете location(px,py);
это. Выполняется только (1), поэтому значение py изменяется на 8, а значение px остается неизменным
, поэтому вывод равен 10 8
3) Когда кто-то комментирует строку расположения кода (py )
, когда вы комментируете location(py)
это. (1) не выполнено, поэтому значение py остается неизменным. Значение, переданное ему, равно location(px,py)
, равно 10 и 2
здесь
y+=2; //y=4
px+=y; //px is 14
, поэтому вывод равен 14 2
Примечание: void location(int &x, int y=4)
, x не является локальной переменной, это ссылка на переданное значение, поэтому изменение x в функции также отражается в фактическом значении.