C 中變數的範圍

2021-09-28 15:37:47 字數 1577 閱讀 6645

同名的變數不能在相同的範圍內宣告兩次,變數的範圍是可以訪問該變數的**區域。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

console.

writeline()

;for

(int i =

9; i >=

0; i--

) console.

readkey()

;}}}

輸出為:01

2345

6789

9876

5432

10在同乙個方法中,**中的變數i宣告了兩次。i都是在迴圈內部宣告的,所以變數對於迴圈來說是區域性變數。迴圈結束後該變數就出作用域,不能再訪問,接著執行下乙個迴圈,此時變數的作用域都只在迴圈內部,可以同時存在。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

console.

readkey()

;}}}

此時會產生乙個錯誤:

變數「j」已被賦值,但從未使用過他的值,

變數「j」是在for迴圈開始前定義的,仍在for迴圈的範圍內,在main方法結束執行後,變數「j」才出作用域,第二個「j」不合法,編譯器無法區別這兩個變數,所以這樣不允許。

在某種情況下,可以區分同名但範圍不同的兩個識別符號。此時編譯器允許宣告第二個變數,原因是c#使得變數之間有乙個基本的區分,它把宣告為型別級的變數看作是字段,而把在方法中宣告的變數看作區域性變數。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

}}

j變數定義在類級上,在類刪除前是不會出作用域的,此時在main方法中宣告的新變數j隱藏了同名的類級變數,所以最後輸出30

如果要引用類級變數,可以使用語法「object.fieldname」,在物件的外部引用類的字段或結構。

**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

}}

輸出結果:

3020

第乙個是區域性變數的輸出,第二個引用類級變數的輸出。

C 中變數的作用範圍 可見範圍

作用域為當前 塊,即 中。在 塊外部不可見。區域性靜態變數,即在 塊中宣告的靜態變數,作用域為當前 塊,超過該 塊則不可見 static int a 0 void test 2.類靜態成員變數,作用域為當前類,超出類範圍則不可見 static int a class test 3.全域性靜態變數,不...

中宣告變數的範圍

c 0 x現在被稱為c 11 因為它不是過去十年完成 它終於被批准。我打算繞過新增一些關於它的教程,但我想做一些可能更直接的stl以來首次適用於大多數人。編譯器支援c 11而參差不齊 見 init statement expr1 expr2 宣告 迴圈考慮最簡單的方法是將其轉換成等價的while迴圈...

C 中整型變數的儲存大小和範圍

c 中可用的整型型別有五種,由小到大分別是char 也可以看成一種單位元組的整型 short int long long long。它們使用不同數目的位來儲存整型值。char在任何系統中都是單位元組8位,但是short總是16位,int總是32位嗎?並非那麼簡單,沒有一種選擇能夠滿足所有計算機的設計...