Что значит выражение «выстрелить себе в ногу?» (в виде кода)?
Часто слышу/читаю это высказывание, и чаще всего попадается в статьях/комментариях это выражение (особенно при упоминании языка С и С++).
С не знаю. (чуть сложнее "Hello world") знаю C++ (достаточно хорошо разбираюсь в C#)... Как я понимаю... это что-то вроде "рубить сук, на котором сидишь"... а как это выглядит на примере (в С++ к примеру) в коде???
Можно объявить массив размером 2, а записывать и брать данные из необъявленных ячеек(3+). При этом ошибка может иногда возникать "беспричинно", а может не возникать вообще, поэтому её сложно найти.
Это означает, что на языке можно написать команду или конструкцию, которая сломает нормальное поведение программы или системы (или будет выполняться совершенно не так, как можно было бы логически предположить), и при этом компилятор/интерпретатор это скомпилирует и не ругнется.
ЯП здесь сравнивается с револьвером 19 века, который не имел автоматического взвода и либо стрелок медленный и неживой, либо он ходит со взведенным курком и отстреливает себе ногу.