我正在阅读nginx的源代码并发现它没有初始化许多数值变量,包括ngx_int_t ngx_last_process;,这里ngx_int_t定义为long int
#if 0
ngx_last_process = 0;
#endif
Run Code Online (Sandbox Code Playgroud)
那么@Igor Sysoev认为没有必要进行初始化?
但是在程序中它假定默认值是0:
for (s = 0; s < ngx_last_process; s++) {
if (ngx_processes[s].pid == -1) {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
是否保证未初始化的变量0在c中具有价值?
我在 C 中创建了一个包含 10 个元素的数组,main并仅为某些元素声明了值。打印出数组时,我注意到其中一个未受影响的元素没有初始化为零。相反,它每次都被初始化为一个不同的大值(即1491389216)。然后我注释掉了我的所有代码,并像我最初声明的那样离开了数组。
运行代码时,数组的前 8 个元素被初始化为零,数组中的第 9 个元素被初始化为一个大值(如1491389216),每次都改变,最后一个元素始终被初始化为相同的非-零号。
有谁知道为什么会这样?