switch語句的主要功能(switch語句例子)
哈嘍,大家好~~~我是小編田甜,關(guān)于switch語句的主要功能,switch語句例子這個很多人還不知道,那么現(xiàn)在讓田甜帶著大家一起來看看吧!
1、switch(x) { default: if(prime(x)) { case 2: case 3: case 5: case 7: process_prime(x); } else { case 4: case 6: case 8: case 9: case 10: process_composite(x); } } 你能說出它如何執(zhí)行嗎? switch語句的格式為: switch(條件)語句 其中,條件的類型可以是整數(shù)類型,枚舉類型,或者類類型(但該類需要有單一的轉(zhuǎn)換到整數(shù)類型或(可以是字符類型,但不能是浮點(diǎn)類型、字符串、指針類型等),語句部分不一定非得是一條復(fù)合語句。
2、因此,switch("123"[2]+(int)3.1);是條合法的switch語句,switch(j)case 5:i++;也是條合法的switch語句。
3、如果switch的語句部分是一條非復(fù)合語句,則其內(nèi)定義的變量作用域,效果上等同于該條語句加上了{(lán)}。
4、如int i=3;switch(i)int i=4;,相當(dāng)于int i=3;switch(i){int i=4;},因此這并不會導(dǎo)致同一局部域下的重復(fù)定義錯誤。
5、 case標(biāo)號后為一個整數(shù)類型的常量表達(dá)式,因此int i=3;switch(i){case 3:;}合法,而int i=3;switch(3){case i:;}不合法,因?yàn)閏ase i:的i不是個靜態(tài)表達(dá)式。
6、如果將int i=3;換成const int i=3;則后者在C++中就合法了,但在C中仍然不合法。
7、原因是C和C++對const的處理不同,在C中,const限定的量是不能直接去修改的,但它本身并不是常量表達(dá)式;在C++中,const限定的量,如果其值能在編譯時確定,則其可出現(xiàn)在必須使用常量表達(dá)式之處。
8、 同一個switch的各個case標(biāo)號的值不能夠相互重復(fù)。
9、要注意的是,case標(biāo)號在實(shí)現(xiàn)中是有上限的:C89標(biāo)準(zhǔn)要求至少257個,這保證了ASCII被switch列舉一遍。
10、 雖然要求case標(biāo)號是常量表達(dá)式,看起來似乎不是很零活方便(比如對比VB的Select Case),但是這樣的設(shè)計可以保證更高的效率,而效率則是C和C++最為看重的因素。
11、因?yàn)閏ase標(biāo)號的值是編譯時可確定的整數(shù)類型,又因?yàn)槠洳豢捎兄貜?fù),因此編譯器可以進(jìn)行優(yōu)化。
12、 最后要強(qiáng)調(diào)的問題是,C++中g(shù)oto不能從前往后跳過變量定義,因此switch內(nèi)出現(xiàn)的變量定義語句,最好放在復(fù)合語句{}中包起來。
本文分享完畢,希望對大家有所幫助哦。
免責(zé)聲明:本文為轉(zhuǎn)載,非本網(wǎng)原創(chuàng)內(nèi)容,不代表本網(wǎng)觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實(shí)相關(guān)內(nèi)容。