Возвращаемое значение функции "fun" неожиданно
Я изучаю C, написав функцию высокого порядка "funfun", которая возвращает функцию "fun"
#include<stdio.h>
void* funfun(const int k) {
int fun(const int c) {
//int sum = k + c;
printf("k = %d, c = %d, sum = %d\n", k, c, k + c);
return k + c;
}
return fun;
}
int main() {
int (*ptr)(int) = funfun(3);
printf("%d\n", ptr(2));
return 0;
}
Закомментируя "int sum = k + c;", отображение неожиданно:
k = 3, c = 2, sum = 5
134513986
При сохранении этой строки ожидается отображение:
k = 3, c = 2, sum = 5
5
Код скомпилирован и выполненс:
gcc a.c -o a && ./a
gcc -v показывает:
gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)