1. c#鍙橀噺鐨勪綔鐢ㄥ煙鍒板簳鏄浠涔堟剰鎬濆晩錛岃皝鑳界粰瑙i噴涓
鍙橀噺鐨勪綔鐢ㄥ煙鏄鍙浠ヨ塊棶璇ュ彉閲忕殑浠g爜鍩燂紝紜瀹氫綔鐢ㄥ煙鍙浠ユ牴鎹浠ヤ笅瑙勫垯銆
錛1錛夊瓧孌碉紙涔熺О鎴愬憳鍙橀噺錛夋墍灞炵殑綾誨湪鏌愪釜浣滅敤鍩熷唴錛屽垯瀛楁典篃鍦ㄨヤ綔鐢ㄥ煙鍐呫
錛2錛夊湪while銆乫or銆乨o鎴栫被浼艱鍙ヤ腑澹版槑鐨勫矓閮ㄥ彉閲忓瓨鍦ㄤ簬璇ュ驚鐜浣撳唴銆
錛3錛夊矓閮ㄥ彉閲忓瓨鍦ㄤ簬琛ㄧず澹版槑璇ュ彉閲忕殑鍧楄鍙ユ垨鏂規硶緇撴潫鐨勫皝闂鎷鍙蜂箣鍓嶇殑浣滅敤鍩熷唴錛屼竴鏃︾誨紑榪欎釜浣滅敤鍩熷悗瑕佸啀嬈′嬌鐢ㄨ繖涓灞閮ㄥ彉閲忓悕鍒欒佹眰鐢ㄦ埛閲嶆柊澹版槑錛岃櫧鐒惰繖涓や釜鍙橀噺鍚屽悕浣嗗畬鍏ㄦ槸涓や釜鍙橀噺錛屽洜涓哄畠浠鏈変釜鑷鐨勪綔鐢ㄥ煙銆
鍦ㄤ唬鐮佹碘1鈥濆勪袱涓寰鐜閮藉湪浣跨敤鍙橀噺I錛屽彲浠ヨ繖鏍風殑鍘熷洜鏄鍦ㄤ袱嬈″0鏄庝腑I閮芥槸鍦ㄥ驚鐜鍐呴儴澹版槑鐨勶紝榪欐牱鍙橀噺I瀵逛簬寰鐜鏉ヨ存槸灞閮ㄥ彉閲忋傝屽逛簬浠g爜浠b2鈥濅腑鐨勫彉閲廽錛屽洜涓哄彉閲廽浠ョ粡鍦╢or寰鐜寮濮嬪墠瀹氫箟錛屽湪鎵ц宖or寰鐜鏃秊澶勪簬鍏朵綔鐢ㄥ煙鍐呫傝繖鏍蜂究鍜屽驚鐜鍐呯殑鍚屽悕鍙橀噺鍐茬獊錛岀紪璇戝櫒鏃犳硶鍖哄埆榪欎袱涓鍙橀噺銆
2. 鍙橀噺鐨勪綔鐢ㄥ煙錛屼綘浜嗚В鍚楋紵
🔍鍙橀噺浣滅敤鍩
鍙橀噺鐨勪綔鐢ㄥ煙鏄鎸囧彉閲忓湪紼嬪簭涓鑳藉熲滈湶鑴糕濈殑鍦版柟銆備笉鍚屼綔鐢ㄥ煙閲岋紝鍙橀噺鍚嶈繕鑳解滄挒琛鈥濆摝錛
🔨緙栬瘧棰勫勭悊
緙栬瘧棰勫勭悊鏄紼嬪簭緙栬瘧鍓嶇殑鍑嗗囧伐浣溿傚逛簬C璇璦鏉ヨ達紝瀹冧富瑕佸寘鎷涓夊ぇ閮ㄥ垎錛氬畯瀹氫箟銆佹枃浠跺寘鍚鍜屾潯浠剁紪璇戙傝繖浜涢勫勭悊鍛戒護閮芥槸浠モ#鈥濆紑澶寸殑鍝︼紒
💡鍙橀噺浣滅敤鍩熺殑鍒嗙被
鍙橀噺鐨勪綔鐢ㄥ煙鍙浠ュ垎涓哄叏灞浣滅敤鍩熷拰灞閮ㄤ綔鐢ㄥ煙銆傚叏灞浣滅敤鍩熺殑鍙橀噺鍙浠ュ湪鏁翠釜紼嬪簭涓浣跨敤錛岃屽矓閮ㄤ綔鐢ㄥ煙鐨勫彉閲忓彧鑳藉湪瀹氫箟瀹冪殑鍑芥暟鎴栬鍙ュ潡涓浣跨敤銆
📖緙栬瘧棰勫勭悊鍛戒護
緙栬瘧棰勫勭悊鍛戒護鍖呮嫭瀹忓畾涔夈佹枃浠跺寘鍚鍜屾潯浠剁紪璇戙傚畯瀹氫箟鍙浠ョ敤鏉ュ畾涔夊父閲忋佸嚱鏁板拰浠g爜鍧楋紝鏂囦歡鍖呭惈鍙浠ョ敤鏉ュ紩鍏ュご鏂囦歡錛屾潯浠剁紪璇戝彲浠ユ牴鎹鏉′歡閫夋嫨緙栬瘧浠g爜鍧椼
👨💻緙栫▼灝忔妧宸
鍦ㄧ紪紼嬩腑錛屾垜浠鍙浠ヤ嬌鐢ㄥ畯瀹氫箟鏉ュ畾涔夊父閲忓拰鍑芥暟錛岃繖鏍峰彲浠ユ彁楂樹唬鐮佺殑鍙璇繪у拰鍙緇存姢鎬с傚悓鏃訛紝鎴戜滑涔熷彲浠ヤ嬌鐢ㄦ潯浠剁紪璇戞潵鏍規嵁涓嶅悓鐨勫鉤鍙版垨緙栬瘧鍣ㄩ夋嫨緙栬瘧浠g爜鍧椼
3. 操作系統和編譯器是怎麼識別全局變數和局部
操作系統,只管調度進程,線程編譯器根據編程語言的定義,確定變數的作用於,存儲類型,生命周期!
定義在函數外部的變數,只有文件靜態變數,和外部變數
外部變數,是實實在在的全局變數,不論作用域還是生命周期。
靜態變數是局部作用域的,生命周期為,程序的生命周期的變數。
自動變數和函數參數,是局部作用域的生命周期為函數結束的局部變數。
寄存器變數,用register定義,是局部變數;
函數內部的靜態變數,語句組內部的靜態變數,局部作用域的,生命周期為,程序的生命周期的變數。
靜態變數,編譯器,可以通過static關鍵字知道。
自動變數,1)函數內部定義的非靜態變數,非寄存器變數是自動變數。
2)函數參數,只能是自動變數,不過也可能定義在寄存器中。
這和調用約定有關,因此不可以用register定義。
C語言沒有全局變數這種數據類型。
只有4種存儲類型,和變數的作用域與生命周期的概念。
C++同樣沒有全局變數這種數據類型。
有另外的兩種作用域
1)namespace作用域。
2)類(類型)作用域。
C只有全局,文件,函數以及函數內部的語句組,4種逐漸縮小的作用域。
其中內層,對外部作用域,具有完全的遮蔽作用。
C++可以通過作用域限定符,區分不同作用域(類,名空間)的名字。
類作用域,可以通過訪問許可權,限制外部的訪問權。
函數作用域(語句組作用域)是封閉的作用域,外部不可以使用函數內部定義的名字。
也不會和外部有命名沖突,只會遮蔽外部的名字。
類作用於,和名空間由於訪問方式不同,命名沖突和遮蔽有些特殊。
函數和全局域,基本不會和類作用域有命名沖突,除非類方法內部。
命名空間,可以避免命名沖突。
類繼承體系中,則有遮蔽現象。
還有訪問許可權問題。
實際上,全局變數,有兩個概念可以判定
1)作用域(空間)===>由定義和聲明位置,和定義和聲明使用的關鍵字決定。
2)生命周期(時間)===>外部和靜態變數,的生命周期是全局的,從初始化到程序結束。
函數參數,和函數局部非靜態變數,是局部變數
函數參數的傳遞,是跨函數的(實參,變成形參);
函數內部定義的,局部變數,只有定義處可見,作用域是函數甚至語句組局部,
其中靜態變數,生命周期是全局的,非靜態是函數甚至語句組的。
全局變數,不是C,C++的概念。
而是,使用編程語言的程序員的概念。
所以,全局變數和C,C++的存儲類型,作用域,生命周期等,不是一一對應的概念。
所以,可以有不同的理解。
所以這個概念是很模糊的,不清晰的。
比如局部靜態變數,類的靜態變數,是否全局變數,就不是可以清晰的說明的。
4. c語言的變數定義
C語言中變數遵循「先定義後使用」的原則:
1、定義變數的格式:數據類型 變數名;
首先要強調的一點是:變數的定義是一條語句,每條語句都是以分號結尾的。故定義完變數,後面不要漏掉「;」分號。
在變數定義中,「數據類型」表示想要存儲什麼類型的數據就定義什麼類型的變數。
如想要存儲整數就定義成 int 型;想要存儲小數就定義成 float 型或 double 型;想要存儲字元就定義成 char 型等等。
「變數名」就是你想給這個變數起個什麼名字,通常都是用字母、數字與下劃線組合而成。比如:
「int i;double price;double goods_price2」等等。
就表示定義了一個整型變數 i、小數型變數price、goods_price2;
2、變數定義完成後,接下來就是使用變數,為變數賦值。
將一個值放到一個變數中,這個動作叫「賦值」。通俗點講,「給變數賦值」意思就是將一個值傳給一個變數。
賦值的格式是:
變數名 = 要賦的值;
它的意思是將=右邊的數字賦給左邊的變數。比如:
i = 3;
這就表示將 3 賦給了變數 i,此時 i 就等於 3 了。
3、變數的定義和賦值,可以分成兩步寫,也可以將它們合成一步,而且事實上,在實際編程中用得最多的也是合二為一的寫法。
形式如下:
數據類型 變數名 = 要賦的值;
比如:int i = 3;
就表示定義了一個變數 i,並把 3 賦給這個變數。它與
int i;
i =3;
是等價的。
在定義變數時也可以一次性定義多個變數,比如:
int i, j;
這就表示定義了變數 i 和 j。這里需要強調的是,當同時定義多個變數時,變數之間是用逗號隔開的,千萬別寫成分號。這是很多新手最容易犯的錯誤,即將逗號和分號記混了。
同樣也可以在定義多個變數的同時給它們賦值:
int i = 3, j = 4;
中間還是用逗號隔開,最後別忘記輸入分號。
最後需要注意的是,在較老的 C89/C90 標准(也稱 ANSI C 標准)中,變數只能在程序的開頭定義,或者說變數定義的前面不能有其他非聲明或非定義的語句。
(4)變數作用域是編譯器決定的嗎擴展閱讀:
在主回答中,提到了變數定義時,變數名通常都是用字母、數字與下劃線組合而成,但是實際上,變數名也不是隨便組合的,變數定義需要遵循一定的規范,否則容易產生歧義,影響整體程序代碼 的可讀性。
所以在定義變數的時候,要注意以下命名規范:
(1)、變數名的開頭必須是字母或下劃線,不能是數字。實際編程中最常用的是以字母開頭,而以下劃線開頭的變數名是系統專用的。命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。
(2)、變數名中的字母是區分大小寫的。比如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。當標識符由多個片語成時,每個詞的第一個字母大寫,其餘全部小寫。
比如: int CurrentVal;
這樣的名字看起來比較清晰,遠比一長串字元好得多。
(3)、變數名絕對不可以是C語言關鍵字,不能有空格。
(4)、變數名的長度應當符合「min-length && max-information」原則。
C 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。