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