什麼情況下變數應該賦初值,什麼情況下變數應該賦初值

時間 2022-05-22 08:05:02

1樓:匿名使用者

c++ 範疇,標準規定

1. 所有在全域性域(global scope)定義的型別(包括內建型別,class 都會被編譯器自動「值初始化」—— 數值型(包括 bool ,char 系列)都初始為 0)

2. 在非全域性域定義的變數

使用者自定義了 或者 可產生預設建構函式的 class 類物件,可以被編譯器自動初始化

內建型別,則不會被編譯器自動初始化,值未知。

3. 引用 型別在定義時 必須被使用者指定明確的初始值,而且初始之後其引用值不能更改。

從程式設計習慣來說,一般定義變數都應該養成給予初始值的習慣。除非你確定,定義之後第一次使用該變數就是對他賦值!

2樓:黃邦勇帥哥哥

區域性常量,也就是const型別的區域性常量,比如const int i就必須為i賦初始。 如果常量是全域性的就可以不用賦值。靜態常量也可以不用賦初值。

還有引用也必須賦初值。

還有指標,在使用指標時必須讓指標指向一個變數的地址,當然如果你不使用指標就不會出錯。但是在上面的引用和區域性常量,不管你使用還是不使用都必須賦初值,不然不能執行。按你的題意,就只有區域性常量和引用,必須賦初值,其他變數可賦可不賦,只要你不使用他們就不會出問題。

3樓:匿名使用者

一般情況下c++編譯器會隱式初始化,為避免出現錯用,建議所有的變數都應該顯示賦初值。

為避免錯用,指標型別變數強烈建議顯示初始化。

必須初始化的變數:const變數(也有叫const常量),應用型別。

4樓:wsn石家莊業餘球王

沒有初值會隨機賦一個初值,這樣後面如果不小心在用之前沒有再賦值很容易出現奇怪的錯誤。建議所有的都賦初值

5樓:匿名使用者

最好是在定義之後,使用之前賦初值,最好不要期待編譯器置預設值,多寫一行**也費不了多少時間。

j**a 什麼時候定義變數,什麼時候給變數賦初始值

6樓:沒有響應

只有例項變數會自動賦初值

class a}

7樓:紅佛桌布

欄位是會有初始值的,但區域性變數的話必須手動賦個初始值

c++中定義一個變數一定要賦初值嗎

8樓:匿名使用者

warning是警告,大部分呢時候不影響執行。

9樓:匿名使用者

不一定要賦初值

這裡警告的原因是因為定義了變數c而沒有使用(c不具有具體的數值,僅僅是白白佔用一個空間而已)對程式執行部造成其他影響。

10樓:風若遠去何人留

不一定。

是否賦初始值是按照程式設計的實際需要來確定的。

1 對於全域性變數和區域性靜態變數,如果沒有初始化值,那麼系統預設賦值為0。所以當這類變數的初始值要求為0,或者不關心初始值時,定義時不需要賦初值,這樣可以提高效率。

2 對於區域性變數,如果沒有賦初值,那麼預設為隨機值,即什麼值都有可能。

對於此類變數,如果其初值不重要,或者不會影響程式結果,比如在定義後,下一步就是對其進行輸入等從其它渠道獲取值的**,那麼可以不賦初值。

11樓:

在程式設計中,尤其是c語言或c++中,定義一個變數,在使用前一定要初始化,

如果不初始化在遍以上是沒錯誤的,但是使用中有可能會隨機賦值,造成嚴重的後果。

你上例的問題不是沒有初始化,而是說你定義了一個變數但是從來沒有使用過,是編譯器的提示(警告),並不是錯誤,編譯還是會通過的。

想c#等高階語言的有些資料型別,編譯器會自動初始化。

例如bool 型別,c#會初始化為false,但是c++或c中如果不初始化,那麼這個值很可能是隨機的。

c++什麼時候應該在成員變數定義的時候直接賦值而不是建構函式賦初值?

12樓:藝博教育官方帳號

我猜你應該是想在每一個類初始化的時候就把_a賦值為2吧?

這種情況就把int _a = 2寫到a的預設建構函式裡面好了。

a()還是說你想多個類的例項共享一個_a變數?

這種情況你應該用static關鍵字

static int _a = 2;

還要注意一下訪問許可權

13樓:匿名使用者

const或static變數

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

14樓:張簡淑珍遊汝

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

15樓:匿名使用者

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

16樓:匿名使用者

c語言中變數不賦初值是不能」使用「的。這個」使用「是指讀取變數的內容。因為,未賦初的變數中儲存的資料是個隨機值,其值不確定。

隨機值的產生原因:變數都是儲存在記憶體中的。程式執行以後,會在記憶體中給各個變數安置住處,這些地方以前可能有別的程式用過,裡面留有上次使用後的結果資料,但系統不負責分配空間,不會清理內容,需要程式設計者自己清理。

程式退出時也不清理內容,這就造成了後來者進到這個空間,看到一堆垃圾資料。

一些程式設計者,沒有」定義變數進行初始化「的程式設計習慣,或由於疏漏沒有給變數賦初值,而直接去使用變數中的資料,這樣就會出現隨機現象:有的可以,有的不可以。原因就是記憶體資料剛是否符合呼叫者的條件造成的,符合的就可以,不符合的就出錯。

因此,養成」定義變數就初始化「的好習慣,在使用變數」進行運算「前,一定要注意檢查變數是否已按自己的要求進行了賦值。

另:c語言全域性變數的初始化是系統自動完成的,程式設計者可以不用單獨處理。

17樓:楓若神明

樓主我又來了。

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

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

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

18樓:空

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

什麼情況下應該買保險,什麼情況下有必要購買人壽保險?

平安健康保險 前幾天一個朋友想諮詢保險的事,瞭解保險產品,中間也問了很多關於條款以及服務的問題,然後就問了一句,什麼時候買保險最好。保險 人就反問了一句 那你為什麼想買保險的。朋友 為了一份保障,萬一出了事沒錢就麻煩了。保險 人 那你知道什麼時候出事嗎。朋友 當然不知道了。然後 人就說,既然不知道什...

什麼情況下可以打,什麼情況下可以打

生活美 生活中只有這7件事才可撥110,其他的都不該110受理和管轄 1 刑事案件 2 治安案 事 件 3 危及人身 財產安全或者社會治安秩序的 件 4 自然災害 治安災害事故 火災 交通事故 5 其他需要公安機關緊急處置的與違法犯罪有關的報警 6 危及公共或群眾安全迫切需要處置的緊急求助 7 公安...

在什麼情況下24 36 ,在什麼情況下 24 36 1?

在表示時間的時候。4 36 60,1小時60分鐘。11 13 24,1天24個小時。158 207 365,1年365天。6 54 100,1世紀100年。3 2 1,在算對的情況下。1 一天 1440分鐘 1小時 60分鐘 1分鐘 60秒。2 一刻 15分鐘,一字 5分鐘 閩南廣東地區用法 1 普...