Попался (программирование) - Gotcha (programming)

В программирование, а Попался допустимая конструкция в системе, программе или язык программирования это работает, как описано в документации, но нелогичный и почти навлекает на себя ошибки, потому что на него легко ссылаться, а результат может быть неожиданным или необоснованным.[1]

Пример

Классическая ошибка в C /C ++ это конструкция

если (а = б) код;

это синтаксически действительный: он помещает значение б в а а затем выполняет код если а не равно нулю. Иногда это даже подразумевается. Однако чаще всего это опечатка: вероятно, программист имел в виду

если (а == б) код;

который выполняет код если а и б равны.[1] Современное компиляторы обычно генерирует предупреждение при обнаружении первой конструкции (условная ветвь при назначении, а не сравнение), в зависимости от параметров компилятора (например, параметр -Wall для gcc). Чтобы избежать этой ошибки, есть рекомендация[2] сохранить константы в левой части сравнения, например 42 == х скорее, чем х == 42. Таким образом, используя = вместо == вызовет ошибку компилятора (см. йода условия ). Однако многие виды ошибок не обнаруживаются компиляторами.[нужна цитата ]

Смотрите также

Рекомендации

дальнейшее чтение

  • Стивен С. Дьюхерст (2003). C ++ Gotchas (как избежать общих проблем в кодировании и дизайне). Эддисон-Уэсли. ISBN  0321125185.

внешняя ссылка

  • C Ловушки и подводные камни Эндрю Кениг
  • Проблемы с C ++ Руководство программиста по предотвращению и исправлению девяноста девяти наиболее распространенных, деструктивных и интересных ошибок проектирования и программирования C ++, написанное Стивеном К. Дьюхерстом.