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。 乙個case裡面再巢狀if語句就行了。case 1 a a 3 這是不行的。case後必須跟乙個確切的數值,所以大多數情況下大家都是用幾個if語句並列使用,case不是很有用。如果你想讓a 1,2,3的時候達到同乙個結果,可以case 1 case 2 case 3 break 這樣就行了。 cas... 暢凌文佔易 case後面必須跟常數表示式,不能使用邏輯判斷條件。不過你可以把多個case放在一起用,例如 case 1 case 2 case 3 執行操作 break 霜丹秋興寧 上面的寫法本身就有問題,要想用乙個語句處理多種case可以這樣寫 switch a 而對於提問者的寫法,機器是這樣理解... 會完成。但是需要注意 1.system.windows.forms.timer 是單執行緒的,它只在ui執行緒中執行,定時精度約55ms,當前的事件沒處理完成時,下一次事件不會觸發 過久地處理會導致介面假死。2.system.threading.timer 是多執行緒的,觸發的事件在threadpo...C 中如何讓case包含多種情況
C 中如何讓case包含多種情況
關於C中的timer控制元件,C 中,關於Timer控制元件的說法正確的是 選2項