Рассчитывайте на невозможное
Оператор switch всегда должен иметь предложение с ключевым словом default для ситуации по умолчанию, особенно если эта ситуация не должна возникать:
f( int i ) // переменная i должна иметь значение 1 или 2.
{
switch( i )
{
case 1: сделать_нечто(); break;
case 2: сделать_нечто_другое(); break;
default:
fprintf(stderr, "Внутренняя ошибка в f(): неверное
значение i (%d)", i );
exit( -1 );
}
}
То же самое относится к блокам if/else, работающим в манере, схожей с оператором switch.
В цикле также нужна проверка на невероятное. Следующий фрагмент работает, даже если i первоначально равно 0
—
чего по идее быть не должно:
f( int i ) // переменная i должна быть положительной
{
while ( --i = 0 )
сделать_нечто();
}
Конструкция while(--i)
менее надежна, так как она дает ужасный сбой в случае, если i
сначала равно 0.