基于变量初始化状态的逻辑参数

Basing a logical argument on status of initialization of variable

假设我们在某处定义 num(局部变量)

int num;

然后,如果初始化,说:

num = 420;

我们做某事,如果不做,我们就不做。

这在 C99/c 中是否可行?说明书上找不到。

如果你只是写

num = 420;

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

您可以做的是根据某些条件进行初始化,如下所示:

if (cond)
    num = 420;

现在,!cond 等同于“num 尚未初始化。”您可以根据该条件 cond 依赖任何进一步的代码,它只会在 cond 为真时执行,这等同于“num 已使用 420 初始化。 “