鱼C论坛

 找回密码
 立即注册
查看: 2131|回复: 3

结构体变量有没有默认初值

[复制链接]
发表于 2014-11-7 15:54:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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);[qq]214213826[/qq]
        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,这是为什么呢,难道结构体变量没有赋初值时,系统有默认的初始值。

QQ图片20141107155016.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-11-7 16:12:48 | 显示全部楼层
C规定,未初始化全局变量的初值为0,这个清0的操作是由启动代码完成的,还有已初始化变量的初值的设置,也是由启动代码完成的。
C规定,未初始化局部变量的初值为随机。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-7 16:14:01 | 显示全部楼层
data是全局变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-7 16:15:53 | 显示全部楼层
我刚刚又发了个帖子,哪里结构体是局部变量,你看看为什么编译时不会有没初始化的提醒
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-18 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表