int变量未初始化的默认初值,和变量的类型有关。1 局部变量,在未初始化情况下,初值为随机值。C规范对该初值并没有做规定,具体实现由编译器决定。如VC/VS等编译器,会将初始值值为0xCCCCCCCC, 而GCC等编译器则是不可预知的随机值。2 静态局部变量,即带static修饰的局部变量。全局变量和静态全局...
因此c和d的初始值均保持为0。 那么,初始化一个局部变量和不初始化一个局部变量,在指令层面上,区别在哪里呢? 很简单,亲眼看一下就知道,先看未初始化局部变量的func1: // int a; 00000000004005ad: 4005ad: 55 push %rbp 4005ae: 48 89 e5 mov %rsp,%rbp 4005b1: 48 83 ec 10sub$0x10,%rsp 4005...
从技术上讲,未初始化的非静态局部变量的值是Indeterminate [Ref 1]。
如果未显式初始化全局变量,则只有全局变量的默认值为零。
全局是0 局部是随机数 未初始化自加没有意义
int变量未初始化的默认初值,和变量的类型有关。1 局部变量,在未初始化情况下,初值为随机值。C规范对该初值并没有做规定,具体实现由编译器决定。如VC/VS等编译器,会将初始值值为0xCCCCCCCC, 而GCC等编译器则是不可预知的随机值。2 静态局部变量,即带static修饰的局部变量。全局变量和静态全局...