int func() {
int a;
++a; // is this safe?
printf("%d\n", a);
}
我知道当我 printfa
我得到未定义的行为,但++a
在 C++ 标准中是安全的吗?这是否会分配“另一个”未初始化的值而a
没有副作用(抛出异常或使程序崩溃)?
int func() {
int a;
++a; // is this safe?
printf("%d\n", a);
}
我知道当我 printfa
我得到未定义的行为,但++a
在 C++ 标准中是安全的吗?这是否会分配“另一个”未初始化的值而a
没有副作用(抛出异常或使程序崩溃)?
无论如何使用未初始化的变量会给您未定义的行为。因此,在 C++ 中
不增加未初始化int
的值是不安全的。
您的程序可能不会崩溃,但它肯定不安全。您应该始终初始化变量。可能发生的最糟糕的情况是您的程序似乎可以工作,但会在您不知道原因的情况下随机崩溃,或者只是以一种奇怪的方式运行。
“未定义的行为”是什么意思?在我看来,你的程序应该打印一些 int 没有任何异常等等。
++(uninitizalized int) 是绝对合法的,我猜。它只会增加当前值,无论 var 是否被初始化。
但无论如何,未初始化的变量是邪恶的。