结构体变量有没有默认初值
#include<stdio.h>struct packed
{
unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
char c1;
double b1;
}data;
main()
{
int a1;
printf("%d\t",a1);214213826
printf("%d\t",data.i);
printf("%c\t",data.c1);
printf("%f\t",data.b1);
printf("%d\t",data.b);
printf("%d",data.a );
}
如果是普通变量没有赋初值就要强行输出,系统编译时会提示,运行时给出一个无法预料的值,但是我定义了结构体,然后定义该结构体变量,但是同样也没有赋初值,而编译时不会有没有赋初值的提醒,运行时结构都是0,这是为什么呢,难道结构体变量没有赋初值时,系统有默认的初始值。
C规定,未初始化全局变量的初值为0,这个清0的操作是由启动代码完成的,还有已初始化变量的初值的设置,也是由启动代码完成的。
C规定,未初始化局部变量的初值为随机。
data是全局变量 我刚刚又发了个帖子,哪里结构体是局部变量,你看看为什么编译时不会有没初始化的提醒
页:
[1]