Если ваш компилятор не имеет опцию -fno-stack-protector
, он вернет код ошибки (т.е. что-то !=0
), в противном случае он вернет 0
(что означает "true" в кодах возврата),показывая, что все в порядке.
Теперь выражение foo && bar
означает, что bar
будет выполнено только в том случае, если foo
вернет код без ошибки (т.е. 0
).Итак, вы видите, что если ваш компилятор не имеет этот флаг, он вернет "false" (что-то !=0
) и команда echo
никогда не будет выполнена.Но если у него есть флаг, echo
будет выполнен.