#include <stdio.h>
int i = 3, j = 10;
int crypt(int j)
{
return (i = i+j);
}
void decrypt(int x, int i)
{
j += crypt(i);
}
int main(void)
{
int i = 0;
i = crypt(5);
decrypt(i, j);
printf("|%d %d|", i, j);
return 0;
}
У меня проблемы с выяснением, почему он распечатывает | 8 28 |.
Часть "8", я понимаю, что на
i = crypt (5) -> j теперь 5 в этой функции -> i = i + j -> нет i, поэтому он использует глобальную переменную i = 3 -> i = 3 + 5 -> возвращает i = 8
Таким образом, i в главной функции становится 8.
А как насчет следующей распечатки? Почему 28 вместо 23?
То, как я это читал, было так
decrypt (i, j) -> decrypt (8, 10) -> x теперь 8 и i теперь 10 в этой функции -> j + = crypt (i) -> j + = crypt (10) - > j в этой функции теперь 10.
return (i = i + j), в этой функции нет i, поэтому i = 3 + 10 ... возвращает 13?
Так тогда j + = 13 - это 23?
Какую часть шага я испортил? Я читаю локальную / глобальную область онлайн и до сих пор не совсем понимаю, где я ошибся ... Такое ощущение, что я где-то испортил свою ценность.
PS: я извиняюсь за плохое форматирование, не совсем уверенный, как еще я могу выразиться аккуратно.