C 為什麼要規定對所有用到的變數要先定義後使用,這樣做有什麼好處

時間 2021-08-16 12:11:42

1樓:

規定「所有用到的變數要先定義後使用」,編譯器處理起來比較方便,不會有歧義。

因為 c++ 裡面,相同名字的變數在【不同的作用域】裡面,是可以重複宣告的。

注:每一對"{}"就是一個作用域。

比如下面的程式是可以編譯通過的:

#include

using namespace std;

int main(int argc, char *argv)

// 作用域 1 開始 }}

return 0;

}輸出結果為:12

34如果【沒有】規定「所有用到的變數要先定義後使用」,上面的程式會怎麼樣呢?

那麼上面這個程式就亂套了。因為可以先使用,再定義,

輸出語句1~4 就不知道自己該用哪個變數 a 了(這裡有4個不同的 a)。

因為不需要「先定義,後使用」,輸出語句1~4可以使用定義在任何地方的哪個變數 a 。

這樣,編譯器就無法確定,也就無法編譯了。

如果規定「所有用到的變數要先定義後使用」,上面的程式會怎麼樣呢?

那麼上面這個程式可以正常執行:

1)在輸出語句1的位置為止,只有【作用域 1 】定義了一個 a : int a=1 ,因此輸出 1 。

2)在輸出語句2的位置為止,【作用域 1 】和【作用域 2】分別定義了一個 a :

int a=1 ;

int a=2 ;

根據就近原則,使用最內層作用域的 a ,【作用域 2】裡面的 a ,輸出 2 ;

3)在輸出語句3的位置為止,【作用域 1 】【作用域 2】和【作用域 3】分別定義了一個 a :

int a=1 ;

int a=2 ;

int a=3 ;

根據就近原則,使用最內層作用域的 a ,【作用域 3】裡面的 a ,輸出 3 ;

同理可以分析輸出語句4。

這就是為什麼規定「所有用到的變數要先定義後使用」的原因之一吧。

2樓:匿名使用者

比如函式裡面的變數,必須要先定義了,編譯器才能為你分配足夠的棧空間存放這些變數以備後續使用。

3樓:匿名使用者

c/c++可以用來開發系統軟體 系統底層哪怕錯一個位元組 也會引起系統崩潰 這樣可方便編譯器進行型別檢查 防止出錯

4樓:匿名使用者

有什麼好處不清楚,壞處是變數不定義根本就沒法使用。

5樓:匿名使用者

記憶體的使用方法就是「先申請後使用」。在定義變數的過程中會為你的變數分配記憶體

6樓:匿名使用者

就好像你開車(車是沒油的),你是先加上油再開呢還是開完了再加油

c語言變數為什麼要分類,為什麼C語言要分幾種基本資料型別

豐富的變數分類是高階語言的優勢,也是計算機語言進化的標誌。最初的計算機語言是沒有這麼多變數分類的,隨著複雜問題處理要求及大型程式的出現,以及硬體的記憶體管理等等方面,逐漸對變數進行分類,使得在程式設計時變數能夠覆蓋全部型別,能夠處理各種問題時方便了記憶體的管理。舉個例子 全域性變數和區域性變數的作用...

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

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

什麼叫蝸桿的特性係數?為什麼要規定蝸桿的特性係數

蝸桿特性係數 蝸桿的分度圓直徑與模數的比值。規定蝸桿的特性係數 q 為標準值原因如下 1 有利於蝸桿標準化,減少了蝸桿的數目。2 減少了加工蝸輪的蝸桿滾刀的數目。蝸桿傳動是在空間交錯的兩軸間傳遞運動和動力的一種傳動,兩軸線間的夾角可為任意值,常用的為90 蝸桿傳動用於在交錯軸間傳遞運動和動力。蝸桿傳...