C語言中有些變數可以不賦初值而有些不行為什麼

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

1樓:張簡淑珍遊汝

圖不行是因為b是作為判斷條件的如果b沒有賦初值可能會得到一個隨機數,你可以把x1理解成一個容器,就會得到一個想不到的結果,而下圖x1是一個普通變數它不是作為判斷條件的,它等待往裡面放東西

2樓:匿名使用者

圖1中一開始定義b時沒有賦值,b就是一個很大的數,故不會進入迴圈,直接輸出b;而圖二中開始定義x1也是沒有賦值,x1也是一個很大的數,但是while的判斷條件是day>0,會進入迴圈,迴圈中給x1賦值了 所以能輸出正常計算值。

3樓:楓若神明

樓主我又來了。

其實不能說不賦初值就不行,對於區域性變數,不賦初值的話,其實他裡面存的是一個隨機的值,誰也不知道他是多少,因此如果沒賦初值的情況下就使用它,程式是完全不可控的,如你的圖1,直接在while裡去判斷b了,因此這個while判斷是不可控的。

但是圖2裡面,while(day>0),這個是一定成立的,所以對x1的第一次使用就是x1=2*(x2+1);相當於給他重新賦值了,這個時候x1的值已經固定了,再往下走就沒有問題了。

建議:即使如圖2所示最後結果是成功的,也不建議樓主這樣寫**,記住區域性變數一定要初始化,你可以int a=0;初始化,也可以int a; a=0;這樣去初始化。

4樓:空

但是靜態區域性變數不賦初值,不也是自動為0嗎?

c語言中定義變數不賦初值是多少?

5樓:enjoy蘰踄繧鍴

沒有加static,預設為auto 型,此時,不給初值,變數的初值是隨機的。

如果加專了static不給初值,變數的屬初值是預設的 0。

其實不能說不賦初值就不行,對於區域性變數,不賦初值的話,其實他裡面存的是一個隨機的值,誰也不知道他是多少,因此如果沒賦初值的情況下就使用它,程式是完全不可控的,如你的圖1,直接在while裡去判斷b了,因此這個while判斷是不可控的。

【c語言】

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

c語言中定義變數不賦初值預設是多少

enjoy蘰踄繧鍴 沒有加static,預設為auto 型,此時,不給初值,變數的初值是隨機的。如果加了static不給初值,變數的初值是預設的 0。其實不能說不賦初值就不行,對於區域性變數,不賦初值的話,其實他裡面存的是一個隨機的值,誰也不知道他是多少,因此如果沒賦初值的情況下就使用它,程式是完全...

c語言中結構體中有二維陣列怎樣賦初值

最基本的方法就是 mx 0 name 0 x mx 0 information 0 0 x 以此類推 陣列不能整體直接賦值,以下情況除外 1.初始化時賦值 typedef struct star char name 8 char information 2 2 mx mx mx 2 為了你能看清楚m...

c語言中能不能將整數賦給指標變數

系統記憶體使用是作業系統規定的,如果你希望直接操作記憶體,就必須瞭解系統的記憶體的分配情況,否則造成的損失可能是致命的。你的舉例是不完整的,如果說 point 1 100是非法的,完整語句應該是int point 1 100,之所以非法是因為100不是使用者可以操控的記憶體區域。p 1之所以數合法的...