c語言問題 未初始化int變數的初值

時間 2021-10-17 04:39:55

1樓:

c語言問題未初始化int變數的初值是設定錯誤造成的,解決方法為:

1、首先我們開啟我們的編譯器,在main函式中寫。

2、然後我們宣告定義變數的型別,比如int(整形)double(雙精度)float(浮點型)char(字元型),已 int整形為例。

3、之後要有個空格。

4、接下來寫我們的變數名,注意區分大小寫,大小寫在c語言中是不一樣的。

5、如果想宣告一個型別的多個變數中間要加上逗號。

6、以宣告a,b兩個變數為例,注意在結束時不要忘記了分號。

2樓:風若遠去何人留

int變數未初始化的預設初值,和變數的型別有關。

1 區域性變數,在未初始化情況下,初值為隨機值。c規範對該初值並沒有做規定,具體實現由編譯器決定。如vc/vs等編譯器,會將初始值值為0xcccccccc, 而gcc等編譯器則是不可預知的隨機值。

2 靜態區域性變數,即帶static修飾的區域性變數。

全域性變數和靜態全域性變數,即定義在函式外,不屬於任何一個函式的變數。

這幾種預設初值為0.

3樓:匿名使用者

沒有初始化,記憶體上的值是任意的,但只要你宣告瞭變數,變數的地址就是固定的了,因此裡面的值,無論你重啟編譯器多少次,結果都是一樣的。如果你在下面再定義一個int型別的變數,再列印看看,它的值也許就跟你上面的值不同

不初始化就參與運算是很危險的,有的編譯器是不允許這樣操作的,因此變數最好要初始化

4樓:匿名使用者

在debug配置中,vc++自動把未初始化的空間填充了0xcc,int型的就是0xcccccccc,按有符號整數列印,就是-858993460了

5樓:匿名使用者

全域性是0

區域性的int預設的是-858993460,即0xcccccccc。

6樓:

你有沒有初始化?沒有的話 系統預設分配最大值

7樓:

你重啟電腦,說不定就不一樣了

c語言中未初始化的變數的值是0麼

8樓:

全域性變數 、靜態變數初始值為0,區域性變數,自動變數初始值隨機分配。

定義區域性變數,其實就是在棧中通過移動棧指標來給程式提供一個記憶體空間和這個區域性變數名繫結。因為這段記憶體空間在棧上,而棧記憶體是反覆使用的,所以說使用棧來實現的區域性變數定義時如果不顯式初始化,值就是0的。

全域性變數連結時已分配空間,程式執行時,作業系統的載入器,負責把連結器分配給全域性變數的虛擬記憶體空間,對映到一個初始化為零的頁面,所以被初始化為零。全域性和靜態的預設初始化都是靠載入機制實現的。另外:

未初始化的符號在目標檔案的bss段中,而初始化的符號在data段中。

擴充套件資料

c語言變數的儲存型別,變數的初始化

儲存變數值的記憶體型別,有普通記憶體、執行時堆疊、硬體暫存器。預設儲存型別與變數宣告位置有關:像全域性變數這樣**塊之外宣告的變數儲存在靜態記憶體中,不在堆疊裡,程式執行期間始終存在;

**塊內宣告的變數預設儲存型別是自動的(automatic),稱為自動(auto)變數,儲存在堆疊中,執行到**塊時被建立,**塊執行完即被銷燬。

可以給自動變數加上關鍵字static,將它變為靜態儲存型別,它就會在程式執行期間一直存在,但是它的作用域是不變的,**塊外面還是不能用這個變數。

9樓:孫永超

c語言中,全域性變數和區域性靜態變數是儲存在靜態儲存區的,他們在分配的時候都被系統預設初始化為0;而區域性自動變數是在棧上分配記憶體的,如果不對它們進行初始化,那麼他們可能是任意的隨機值。

10樓:匿名使用者

這要看你定義的變數的屬性

全域性變數 靜態變數初始值為0

區域性變數,自動變數初始值隨機分配

11樓:匿名使用者

樓上說的對,看你所設定的是否是全域性變數還是區域性變數

12樓:南天_思語

預設都是0,但是會直接佔用空間。

13樓:匿名使用者

隨機數if( 該變數為靜態儲存方式)

初始化值為0

else未知量

14樓:匿名使用者

根據編譯器而定,不同的編譯環境是不同的。

有的是0, 有的是-1,有的是隨機值。

15樓:

要看是全域性變數還是區域性變數了

c語言中指標變數未賦初值前是不是有預設初始值啊,int *x;x的預設初始值是1嗎?

16樓:匿名使用者

不會的,這也就是為什麼在比較長的程式中,建議你寫程式時先對指標進行初始化,以防出錯。

17樓:匿名使用者

未初始化的指標是一個野指標,它沒有預設初始值,它的初始值由分配給它的記憶體空間存在的值決定。

18樓:匿名使用者

不是指標剛定義時是沒有任何指向的,所以定義指標後要對指標賦初值例如int *p=null;//空指標

或int a=5;

int *p=a;//定義指標變數a的指標希望回答對你有幫助!謝謝

【原創答人】

c語言中,若在函式內部定義變數時沒有給變數賦予初值,如int a;,則a的初始值為

19樓:匿名使用者

區域性變數未初始化就是一個隨機值,如果宣告的int為全域性變數會預設初始化為0

20樓:匿名使用者

變數的定義實際是指定了一個記憶體的單元而已,如果剛開機也許是0大多不確定,是個隨機數

而其他的語言大多是0,

這就是c 的特別之處,一般都要預先賦初值,語言省事了,程式設計的人麻煩一點點

21樓:**

不可預知的數, 即隨機數。

22樓:言不由衷

0xcccccccc

c語言中,宣告變數和初始化變數有什麼作用

愚人談娛樂 c語言中,變數只有先宣告,才能使用,這樣避免程式設計時產生不必要的錯誤,一位不同型別變數的儲存格式和長度都不同,所以位元組長度不同,宣告變數可以讓計算機知道你更需要用什麼樣的格式儲存變數,從而高效穩定地執行程式。c語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程式的編寫要求不嚴格...

c語言memset初始化結構體問題

1.memset函式的原型void memset void s,char ch,size t n 函式的第一個形式引數是指標型別,所以實參因為一個地址,即 a注意 a與a是不同的.a是結構體變數名,而 a是變數a的地址.2.另外memset 是一個庫函式函式,需要加標頭檔案 include 3.正如...

在C語言中,為什麼定義變數的時候總是初始化為0呢?該怎麼理解

符潔愚媚 因為變數是可以變動的,定義一個變數不初始化時,變數會是一個隨機數,進行計算了的時候,就會引用那個隨機數進行計算,會有誤差。 如果全域性變數在定義時不初始化則初始值是0,如果區域性變數在定義時不初始化則初始值是不確定的。 沒字天書 誰說總是初始化0的,全域性變數和靜態變數會,區域性變數不一定...