Пример проблемы требует от нас рассмотрения приведенного ниже кода и прогнозирования того, что будет распечатано функцией funct_1
:
void func_1(int i, int j) {
printf("i is %d, j is %d\n", i, j);
}
/* ... */
/* somewhere in the code, a call to func_1 */
int i = 30;
func_1(i, i++);
/* ... */
Я думал, что когда параметры передаются в такой форме, где они увеличиваются, невозможно предсказать, когда компилятор увеличит i. Решение, однако, это:
The values in the argument are passed as an attack to the function, hence 'j' receives
a value '30' and then i receives the incremented value which is '31'.
Output: i is 31, j is 30
Может кто-нибудь объяснить, что такое атака на функцию и как это происходит?