亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問java和c中for循環的區別

請問java和c中for循環的區別

hy_wang 2017-08-23 21:20:16
請問關于C中for循環和 java中for循環的區別?除了 ?c中for循環變量不能再表達式中聲明 ?也就是for(int?b=3;b<5;B++){}而java中確可以使用這個格式。請問除了這個 java和c中的for循環還有什么區別
查看完整描述

1 回答

?
onemoo

TA貢獻883條經驗 獲得超454個贊

你說的“c中for循環變量不能再表達式中聲明”并不完全正確。在新的 C99 及之后的標準中,for 語句小括號中的第一個部分可以是表達式,也可以是聲明。 所以在 C 中你完全可以這樣寫。


而且還有其他區別:

C99 后,for 語句也有自己的作用域了,小括號中聲明的變量在這個作用域中,并且在 for 語句結束后會退出作用域。

而且需要注意的是:循環體本身也有自己的作用域,和 for 語句小括號的作用域不一樣。所以你可以在循環體中重定義小括號中聲明的變量:

//?C?代碼
for?(int?b?=?3;?b?<?5;?b++)?{
????double?b?=?3.0;??//?這樣寫是可以的!
}

而 Java 中 for 的小括號和循環體都在一個作用域中,所以你不能這樣做。


對于 Java 還需要注意的是:由于 Java 的“作用域隱藏規則”,你不能在 for 循環中重定義 for 語句所在作用域中的變量。比如這樣就不行:

//?Java?代碼
int?b;
for?(int?b?=?3;?b?<?5;?b++)?{}??//?for?中的?b?并不能隱藏掉外面的?b,所以會報錯

但在 C 中,一個作用域中的名字會隱藏掉外部作用域中的同名者,所以你可以像上面那樣寫。

查看完整回答
反對 回復 2017-08-25
  • 1 回答
  • 1 關注
  • 2306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號