2
int func() {
    int a;
    ++a;  // is this safe?
    printf("%d\n", a);
}

我知道当我 printfa我得到未定义的行为,但++a在 C++ 标准中是安全的吗?这是否会分配“另一个”未初始化的值而a没有副作用(抛出异常或使程序崩溃)?

4

3 回答 3

9

无论如何使用未初始化的变量会给您未定义的行为。因此,在 C++ 中
不增加未初始化int的值是不安全的。

于 2013-06-29T14:00:41.310 回答
0

您的程序可能不会崩溃,但它肯定不安全。您应该始终初始化变量。可能发生的最糟糕的情况是您的程序似乎可以工作,但会在您不知道原因的情况下随机崩溃,或者只是以一种奇怪的方式运行。

于 2013-06-29T14:13:25.703 回答
-3

“未定义的行为”是什么意思?在我看来,你的程序应该打印一些 int 没有任何异常等等。

++(uninitizalized int) 是绝对合法的,我猜。它只会增加当前值,无论 var 是否被初始化。

但无论如何,未初始化的变量是邪恶的。

于 2013-06-29T14:03:14.223 回答