C 中關於case中for迴圈的問題

時間 2021-08-11 17:51:00

1樓:匿名使用者

這是由於vc++和標準不一致造成的,我們來考察程式中那個for語句中的i的作用域,按照標準,在for的初始化部分宣告的變數作用域應該在for中,而vc++把這個變數的作用域擴充套件到for所在的層次,就是說在for之後也是可以使用的,那麼按照去掉大括號的程式,i的作用域是從宣告之處到switch的大括號結束。而default標籤跳過了i的宣告語句卻在i的作用域之中,這顯然是有問題的。

之所以加上大括號是正確的,是因為大括號改變了i的作用域

按照標準,這段**的錯誤是main函式的型別是int,其他沒錯。

2樓:

首先明確,for(int i=0;i<5;i++); 這個for語句中定義了變數i,

而在case分支語句中要定義變數必須使用複合語句,就是說你必須把這個變數的定義寫在一對“”中

你可以試試下面的**

#include

using namespace std;

void main()

}//for i*****************************i

cout<

}//for m----------------------------------m

break;

default:

break; } }

3樓:可愛的小知道

在switch語句中,“case 常量表示式”只相當於一個語句標號, 表示式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句後自動跳出整個switch 語句,而是將繼續執行所有後面case語句的情況。 這是與if語句完全不同的,應特別注意。

如果你沒有那兩個括號,就是等價於:

case 1:

for (....)

break;

當然不對,因為case 1:後沒分號,也沒有判斷語句,就等介於這個東東了。編譯器會瘋掉了。

c++中for迴圈和switch語句哪個更高效

4樓:黃鋆維

兩個語句屬於不同吧,for迴圈語句是正規的迴圈語句,switch語句可以說是進行判斷的

比如說for語句

for(int i=1;i<=n;i++)如果是switch語句

switch(a)

case 2:

default:break;

}switch語句相比判斷語句if還是比較方便的

5樓:匿名使用者

for迴圈和switch的使用範圍是不一樣的,for迴圈是針對迴圈的比如你要計算1到100的和之類的 具有迴圈結構的,而switch只是開關語句,比如給一個數字讓判斷是星期幾,是1的話就是星期一可以使用switch語句,這兩個是沒有什麼好比較的

6樓:手機使用者

前指向內容不為0,也就是字串結尾

整個迴圈用於統計字串s中各種字元的個數,v1代表'a'的個數,也就是1,v2代表字元'b'的個數,就是2,v3代表字元'e'的個數,是2,v4代表其他字元個數,就是5

7樓:匿名使用者

這兩個的功能不太一樣吧,如果說哪個更高效的話,應該是switch,它能直接跳到相應 的case 語句中,for要一個一個的迴圈

8樓:匿名使用者

for 語句 和 switch語句沒有可比性,通常情況下不能互換,特殊情況下,**可能用兩種形式都能實現,但肯定是效率各有千秋。

可以比較的是

1、 for 迴圈 與 while 迴圈

2、 if 語句 和 switch 語句

比如:比較下 for 迴圈 與 while 迴圈:

通常情況下,只有你程式**寫的合理,兩者效率一樣,while 迴圈可以完全等價的用 for 迴圈代替。

在不考慮c++編譯器優化的情況下,特殊的語句,while 迴圈會比for 迴圈效率低,但表達形式更簡潔。

9樓:君哥哥愛漂移

用處不同,無比較意義

1.for(;;)用於迴圈語句,如:for(int i=1;i<=100;i++) sum=sum+i; 計算1到100的和,這兒sum初值是0

與for類似的是while,do....while語句,常用while語句

如:int i=1,sum=0; while(i<=100) //計算1到100和

2.switch叫多分支選擇語句,相當於if() {} else if() {} else if() {} else {}這兩個才具有

比較性,switch語句效率要高,但使用範圍小。

int main()

return 0;

}int main()

上述**也可以寫出:

for迴圈裡有 switch case 語句,switch case 語句裡有break,. 執行

10樓:潛水灰飛煙滅

不會,break只是屬於switch的**塊,所以只會跳出switch,如果for依然滿足迴圈條件,會再次進入switch語句

11樓:愛zai地平線

正常情況跳出switch,但是如果break指向for迴圈,就可以結束for迴圈。

12樓:務曜燦阮莘

前者用於迴圈語句中,從迴圈體內直接退出當前迴圈(只退出一層迴圈)。後者用於switch語句中,從中途退出switch語句。不再執行下面的case。

C 中如何讓case包含多種情況

乙個case裡面再巢狀if語句就行了。case 1 a a 3 這是不行的。case後必須跟乙個確切的數值,所以大多數情況下大家都是用幾個if語句並列使用,case不是很有用。如果你想讓a 1,2,3的時候達到同乙個結果,可以case 1 case 2 case 3 break 這樣就行了。 cas...

C 中如何讓case包含多種情況

暢凌文佔易 case後面必須跟常數表示式,不能使用邏輯判斷條件。不過你可以把多個case放在一起用,例如 case 1 case 2 case 3 執行操作 break 霜丹秋興寧 上面的寫法本身就有問題,要想用乙個語句處理多種case可以這樣寫 switch a 而對於提問者的寫法,機器是這樣理解...

關於C中的timer控制元件,C 中,關於Timer控制元件的說法正確的是 選2項

會完成。但是需要注意 1.system.windows.forms.timer 是單執行緒的,它只在ui執行緒中執行,定時精度約55ms,當前的事件沒處理完成時,下一次事件不會觸發 過久地處理會導致介面假死。2.system.threading.timer 是多執行緒的,觸發的事件在threadpo...