if、while、for頭語句定義變量的作用域_第1頁
if、while、for頭語句定義變量的作用域_第2頁
if、while、for頭語句定義變量的作用域_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、if、while、for頭語句定義變量的作用域(VC+2009年02月04日 星期三14:06后補:剛看完Bjarne書的附錄BCompatibility,知道Std C+中for語句域 確實僅限于塊中,如Dev C+;而VC+6.0版應該說還不成熟,比如不支持 excepti on specificati on等。以前的原文:岡看到C+ Primer習題2.20與2.21,說for、while頭語句作用域僅限 于塊內,貌似有誤。當然Lippman在第一章導論講for循環(huán)時P15也提到了因編 譯器而異,第6章語句部分P168也提出了本文要闡述for作用域的問題。應該說 還是因編譯器而異。本文只

2、討論VC+下變量i的情況,考全國計算機二、三級時居然用 Turbo C2.0,這種古董級包括Turbo C3.0連STL都不支持。下文均為看書當時疑惑,自行驗證;教材在后面的講述也慢慢印證了我的想 法。一般,除for夕外, if、while最好不要在頭語句中定義變量。這樣做,才能在 函數體內全可見,不易出錯。While定義語句的“重定義-消亡論”,正如P178的注解:在循環(huán)中定義的 變量在每次循環(huán)里都要經歷創(chuàng)建和撤消的過程。如下程序i變量定義域在塊內,會多次輸出2:int cc=1;while(i nt i=1cc+; i+;cout<if(cc>10 break;cout<

3、 /這句出錯,while之外i不可見相當于拿進去:while(1int i=1;經多種角度的可見性分析,這兩者確是完全等同,不再列舉*上一個程序也顯示出:while允許在塊中重復定義一次變量。while(i nt x=3cc+;int x=2;/這句不出錯/int x=1;/再加上這句重定義出錯if(cc>10 break;應該說此時while頭語句中的int x=3會被忽略。if語句與while完全相同。再來看下for語句,它與while不一樣。首先來看一下for(1;2;3 語句的執(zhí)行,注意順序:先執(zhí)行1,為初始化語句; 再執(zhí)行2,判斷;再執(zhí)行循環(huán)體;最后執(zhí)行語句 3,通常為遞增或遞

4、減。所以對數 組a10遍歷,通常寫循環(huán)為:for (i nt i=0;i<10;i+cout<最后的i=10,但不會輸出a10。如改成cout<如下程序輸出10。如果定義域僅在for塊中,i應該是不可視的。for(int i=0;i<10;+i;coutv可以看到,上面的for語句分解如下:int i=0;for(;i<10;+i ;想想也是,如果int i=0;放在塊內,之前的i<10;i+中的i就不可見了。所 以說是“被迫的”規(guī)定。而下面這兩個程序會出現redefine錯誤:for(int i=0;i<10;i+;for(int i=1;i<3;i+ ;/int i=0;for(int i=1;i<3;i+ ;加上花括號后就對了:int i=0;for(int i=1;i<3;i+ ;總言之,if、while和for頭語句中定義的變量,其作用域很奇特但也只能如此:對if、while,相當于“正常地”定義在塊內,不斷定義并消亡;對 for,相 當于“被迫地”定義于塊之前。另定義或賦值條件語句的返回值:以定義條件語句為例,賦值條件語句相同。賦值號“=”是右結合的,從右往 左。if(in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論