2015-04-18 2 views

ответ

2

Поскольку y является глобальными переменной, в первом вызове fun(x);y становится 14, поскольку x является 10, x += 2 делает x == 12, а затем y = x + 2 который дает 14. Затем вы называете это y == 14, что делает местным x в fun(), x == 16, а затем y == y + 2, который является 18.

2

Это состояния переменных до и после каждого из этих вызовов функций.

PRE: x=10, y=11 
fun(x); 
POST: x=10, y=14 
PRE: x=10, y=14 
fun(y); 
POST: x=10, y=18 

Если вы просто переименовать локальную переменную внутри удовольствия() на что-то другое, чем х, она становится менее сложной.

void fun(int x) { 
    x+=2; 
    y=x+2; 
} 

можно переписать в виде:

void fun(int local_var) { 
    y=local_var+4; //y is global, local_var is thrown away at the end of this scope. 
} 
Смежные вопросы