當前位置:首頁 » 編程軟體 » 為什麼編譯器給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 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布: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