结构体内同数据类型的初始值不同而且会改变

为什么同样是int类型 初始值却不同
连续运行两次,初始值也发生了变化
究竟是什么原因?

img

函数中定义局部变量没有赋值时 int n;,n变量的初始值是随机不确定的
你在定义变量时,给变量赋值一个初始值即可
int n = 0;

如果是结构体,不能在定义结构体中赋值初始值,要在定义结构体变量时再赋值初始值

#include<stdio.h>
struct Stu
{
    int num;
    int age;
};

int main()
{
    struct Stu s = {2,5};  //要在定义结构体变量时再赋值初始值
    printf("%d\n", s.num);
    printf("%d\n", s.age);
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

未初始化使用变量,是随机值,每次都不一样的。
int变量未初始化的默认初值,和变量的类型有关。
1 局部变量,在未初始化情况下,初值为随机值。C规范对该初值并没有做规定,具体实现由编译器决定。如VC/VS等编译器,会将初始值值为0xCCCCCCCC, 而GCC等编译器则是不可预知的随机值。
2 静态局部变量,即带static修饰的局部变量。
全局变量和静态全局变量,即定义在函数外,不属于任何一个函数的变量。
这几种默认初值为0.

img

在定义变量时,系统会自动给这个变量一块地址空间。在没有赋值前,这个变量的内容就是这块地址空间留下的内容。所以,几次运行变量赋值前的内容可能会不一样