Я родом из С#, но сейчас изучаю C. В С#, когда вы хотите сообщить, что произошла ошибка, вы генерируете исключение. Но что вы делаете в C?
Скажем, например, у вас есть стек с функциями push
и pop
. Каков наилучший способ оповестить, что стек пуст во время pop
? Что вы возвращаете из этой функции?
double pop(void)
{
if(sp > 0)
return val[--sp];
else {
printf("error: stack empty\n");
return 0.0;
}
}
Пример K & R на странице 77 (код выше) возвращает 0.0
. Но что, если пользователь нажал 0.0
раньше в стеке, как вы знаете, пустой ли стек или вернётся ли правильное значение?