Попался (программирование) - Gotcha (programming)
В программирование, а Попался допустимая конструкция в системе, программе или язык программирования это работает, как описано в документации, но нелогичный и почти навлекает на себя ошибки, потому что на него легко ссылаться, а результат может быть неожиданным или необоснованным.[1]
Пример
Классическая ошибка в C /C ++ это конструкция
если (а = б) код;
это синтаксически действительный: он помещает значение б
в а
а затем выполняет код
если а
не равно нулю. Иногда это даже подразумевается. Однако чаще всего это опечатка: вероятно, программист имел в виду
если (а == б) код;
который выполняет код
если а
и б
равны.[1] Современное компиляторы обычно генерирует предупреждение при обнаружении первой конструкции (условная ветвь при назначении, а не сравнение), в зависимости от параметров компилятора (например, параметр -Wall для gcc). Чтобы избежать этой ошибки, есть рекомендация[2] сохранить константы в левой части сравнения, например 42 == х
скорее, чем х == 42
. Таким образом, используя =
вместо ==
вызовет ошибку компилятора (см. йода условия ). Однако многие виды ошибок не обнаруживаются компиляторами.[нужна цитата ]
Смотрите также
Рекомендации
дальнейшее чтение
- Стивен С. Дьюхерст (2003). C ++ Gotchas (как избежать общих проблем в кодировании и дизайне). Эддисон-Уэсли. ISBN 0321125185.
внешняя ссылка
- C Ловушки и подводные камни Эндрю Кениг
- Проблемы с C ++ Руководство программиста по предотвращению и исправлению девяноста девяти наиболее распространенных, деструктивных и интересных ошибок проектирования и программирования C ++, написанное Стивеном К. Дьюхерстом.