Если вы просто написать
num = 420;
, а затем попытаться зависеть ваши действия на самом деле, если num
был инициализирован, то нет, вы не можете сделать это.
Причина в том, что C не сохраняет информацию, была ли инициализирована переменная или нет, где бы то ни было во время выполнения. Только компилятор знает, что во время компиляции.
Проверка того, не работает ли num == 420
. Если это автоматическая переменная и не была инициализирована, ее значение неопределенно и вполне может быть 420
без явной инициализации. Доступ к этой переменной без инициализации в любом случае не определен.
Что вы можете сделать, это зависит инициализацию от некоторых условий, например:
if (cond)
num = 420;
Теперь !cond
эквивалентно «num
не была инициализирована.» Вы можете зависеть от любого дополнительного кода от этого условия cond
, и он будет выполняться только в том случае, если значение cond
истинно, что эквивалентно «num
» было инициализировано 420
».
Вы зависите от своего действия от инициализации или значения 'num'? – Downvoter
Вы спрашиваете, можно ли программно определить, инициализирована ли переменная или нет? Если это так, ответ - нет. В C вы, программист, должны отслеживать это. –
@CoolGuy да, это то, что я просил –