為什麼編譯器給int初始化為0
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段屬於靜態內存分配,即程序一開始就將其清零了。
而局部變數是根據你的編譯器 有的編譯器 會給未初始化的變數進行初始化,有的就不會!
希望對樓主有所幫助