Я посещаю курс принципов языков программирования, и есть это упражнение, где я должен рассказать, что печатается этой программой:
{
int x=2;
void A (val/res int y)
{
x++;
write(y);
y=y+2;
}
A(x)
A(x+1)
write (x);
}
A - это функция с передачей параметров значения / результата, поэтому перед ее возвратом следует скопировать окончательное значение своего формального параметра (y) в фактический параметр. Когда первый вызывается, его фактическим параметром является x, так что проблем здесь нет. Тем не менее, второй вызов A имеет х + 1 в качестве фактического параметра.
Что это значит? Может быть, окончательное значение у теряется, потому что нет переменной, куда его скопировать? Или, может быть, мне следует рассмотреть это как уравнение, поэтому, если конечное значение y равно 7, я получаю, что x + 1 = 7, а затем значение x равно 6?