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 蝸桿傳動用於在交錯軸間傳遞運動和動力。蝸桿傳...