我知道有时如果你没有初始化int,你会得到一个随机数,如果你打印整数.
但是将所有内容初始化为零似乎有点愚蠢.
我问,因为我正在评论我的C项目并且我非常直接进行缩进并且它完全编译(90/90谢谢Stackoverflow)但是我想在样式点上得到10/10.
所以,问题是:何时适合初始化,何时应该声明一个变量:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
与
int a;
Run Code Online (Sandbox Code Playgroud)
R..*_*R.. 35
在某些情况下,您不应该初始化变量:
static关键字或全局变量)并且您希望初始值为零时.如果你明确初始化,大多数编译器实际上会在二进制文件中存储零,这通常只是浪费空间(对于大型数组可能是一个巨大的浪费).除了这些问题之外,我认为在可能的情况下初始化非静态变量通常是一种好习惯.
Tim*_*nes 26
尚未提及的规则是:当在函数内声明变量时,它不会被初始化,并且当它在静态或全局范围内声明时,它被设置为0:
int a; // is set to 0
void foo() {
int b; // set to whatever happens to be in memory there
}
Run Code Online (Sandbox Code Playgroud)
但是 - 为了便于阅读,我通常会在申报时初始化所有内容.
我能想到几个原因:
当您稍后在代码中对其进行初始化时。
int x;
if(condition)
{
func();
x = 2;
}
else
{
x = 3;
}
anotherFunc(x); // x will have been set a value no matter what
Run Code Online (Sandbox Code Playgroud)当您需要一些内存来存储由函数或另一段代码设置的值时:
int x; // Would be pointless to give x a value here
scanf("%d", &x);
Run Code Online (Sandbox Code Playgroud)如果变量在函数的范围内而不是类的成员,我总是初始化它,否则你会收到警告.即使稍后将使用此变量,我也希望在声明时分配它.
对于成员变量,您应该在类的构造函数中初始化它们.
对于指针,总是将它们初始化为某些默认值,特别是NULL,即使它们稍后要使用,它们在未初始化时也很危险.
此外,建议使用编译器支持的最高级别的警告来构建代码,这有助于识别不良做法和潜在错误.