当前位置:首页 » 编程软件 » 为什么编译器给int初始化为0

为什么编译器给int初始化为0

发布时间: 2022-04-21 15:54:23

1. int是不是只有在全局变量时才自动初始化为0其它内置变量类型呢


全局变量属于静态内存分配
根据ISO规定得知
在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block
Started
by
Symbol
segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss
段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。
而局部变量是根据你的编译
有的编译器
会给未初始化的变量进行初始化,有的就不会!
希望对楼主有所帮助

2. C语言中声明一个结构体,结构体中的int类型是否都被初始化为“0”

首先你这是C++,不是C语言。C语言必须是struct mytype AAA;
另外如果结构体变量在函数外全局区定义,那么编译器基本上会默认初始化为0;如果该结构体变量是局部的,结果未知。

3. c++ int类型默认值是多少

如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值。

区分变量的类型,有两种情况。

1、局部变量。

局部变量在没有显式初始化时,其值C语言规范没做要求,可以是随机值,也可以是编译器随意给定的值。

比如gcc编译器的局部变量就是随机值,可能为任何值。而微软的编译器,如VC或VS,则会初始化为全c,即0xCCCCCCCC。

2、全局变量或静态局部变量。

所有的全局变量,即定义在函数外的变量,默认值为0。

所有的静态局部变量,即定义在函数内部的static int name形式的,默认初始化为0。

(3)为什么编译器给int初始化为0扩展阅读:

定义方法:

inti;//定义整形变量i

inti=1;//定义整形变量i并初始化为1

定义常量:

constinti;//编译错误,因为常量需要给予一个初值

constinti=1;//定义常量i,值为1

java定义常量:

finalinti=1;//定义常量i,值为1

4. C中,为什么定义一个全局整型变量出始化是0

按规定,程序中所有变量在使用前都要先有值(初始化)以后才能使用。例如,赋值号右边的变量。道理很简单,你要计算a+b等于几,你当然要先让a,b有初值,否则谁也不知道a+b等于几。

凡未初始化的单元,每个bit位的值是不固定的,可能1,可能0,取决于上次该地址被使用的结果。

全局整型变量出始化前是否为0,取决于编译器,有的编译器可能做了“总清”,有的可能没做。

要养成“变量在使用前要初始化”的好习惯。

5. C语言的问题

因为如果没有赋值的话,计算机会给个随机数,所以,除了你已经赋过值的属以外,其他的数都是不定的。如果你想实现你说的,那就使用静态变量(加一个static),静态变量没有赋值的话全部都是0.程序我给你写好了,你看一下
#include<stdio.h>
#define N 7
void main()
{ int i,j;
static a[N][N];
for(i=0;i<N;i++)
a[i][0]=1;
for(i=0;i<7;i++)
for(j=0;j<7;j++)
printf("%d\n",a[i][j]);
}.也就是加一个static

6. map<string,int>中的 int 的初始值为什么是 0

int的默认值应该是0, 你使用的应该是Integer对象。 Integer是Object子类,是对象,可以为null。int是基本数据类型,必须初始化,默认为0

7. int的初始值默认在这个编译器正常是0,但是为什么那个nmb函数一开始不给它赋值为0 程序的结果完全不一样

如果赋初始值会影响程序, 那说明在不初始化时, 默认初始化值并不是你说的0.
根据C语言规范, 未显式初始化的局部变量值应为随机。
你可以尝试在没有初始化时,打印nmb的初始值确认。

8. java题: int a【】=new int【3】.a【0】的值为什么是0

你没有赋初值的情况下编译器一般会默认为0。
就是这么回事。

9. 在C语言中,为什么定义变量的时候总是初始化为0呢该怎么理解。

因为变量是可以变动的,定义一个变量不初始化时,变量会是一个随机数,进行计算了的时候,就会引用那个随机数进行计算,会有误差。

10. int是不是只有在全局变量时才自动初始化为0其它内置变量类型呢


全局变量属于静态内存分配 根据ISO规定得知 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。
而局部变量是根据你的编译器 有的编译器 会给未初始化的变量进行初始化,有的就不会!

希望对楼主有所帮助

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:335
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:943
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371