2016-11-06 158 views
1

说的初始化状态的逻辑论证,我们defie NUM地方(局部变量)基础上可变

int num; 

然后,如果初始化,说:

num = 420; 

我们做一些事情,如果没有,我们没有。

这是可能的C99/c整体?在手册中找不到它。

+1

你是否依赖你的动作来初始化它自己还是'num'的值? – Downvoter

+4

你问是否可以通过程序检测一个变量是否被初始化?如果是这样,答案是否定的。在C中,程序员需要跟踪它。 –

+0

@CoolGuy是啊这就是我要求的 –

回答

2

如果你只写

num = 420; 

,然后尝试取决于是否num已初始化的事实你的动作,然后不,你不能这样做。
原因是C不会在运行时的任何地方存储信息,无论是否已经初始化变量。只有编译器知道在编译时。
检查num == 420是否也不起作用。如果它是一个自动变量并且尚未初始化,则它的值是不确定的,并且很可能是420而没有显式初始化。无论如何访问该变量没有初始化是不确定的。

你可以做的是依赖于某些条件的初始化,像这样的:“num尚未初始化”现在

if (cond) 
    num = 420; 

!cond相当于您可以依赖条件cond的任何进一步代码,并且只有在cond为真时才会执行,这相当于“num已使用420初始化”。

+0

清晰的水晶,欢呼的家庭! –