Обнаружил странное поведение программы. Знатоки, внимание на экран.
#include <stdio.h>
int power(int a, int x)
{
int res;
if(x>0)
{
res=a*power(a,x-1);
}
else
{
res=0;
}
}
main()
{
printf("%d\n",power(2,10));
}
Программа выдает 2048. Вообще, если задать другие
и
, то она всегда выдаст
Вопросы:
а) почему именно 2048?
б) почему она
вообще что-то выдает, ведь return-а в функции power
нет?!
Примечания:
а) если поменять неправильную строчку res=0 на res=1, то абсолютно ничего не меняется. Так что в это тыкать не надо:)
б) если добавить недостающую строчку return res, то программа ведёт себя так, как и задумывалось - просто считает степень. Однако не забудь я этот return - не было бы этой интересной (для меня) загадки.
-- Пт июл 05, 2013 04:02:54 --P.S. Язык совсем не знаю, да.