switch在C++中的用法以及用switch结构时要注意的问题(细节问题比较全面)
在做題時(shí)發(fā)現(xiàn)自己將大一學(xué)的switch忘得差不多了,特地回顧一下。有不對(duì)地方歡迎指出,一起探討。
用switch結(jié)構(gòu)時(shí)注意的問(wèn)題:
1.switch只能接受整型和字符型,所以后面的各個(gè)case的取值也只能是整型或者字符型,不能是字符串!不能是變量!而且是相等時(shí)才執(zhí)行
2.case后面若是字符型一定加的是單引號(hào),加雙引號(hào)會(huì)被認(rèn)為是字符串,不加單引號(hào)會(huì)被認(rèn)為是變量(例如不加單引號(hào),case b時(shí):[Error] the value of ‘b’ is not usable in a constant expression或者 [Error] ‘b’ was not declared in this scope)
3.case后面的常量可以加小括號(hào)也可以不加
4.default后面不用再加break,當(dāng)然,加上也不是不行
5.case 常量 后面的語(yǔ)句:不用寫花括號(hào)將case之后的語(yǔ)句括起來(lái),有多條語(yǔ)句也不用
6.case后面不能跟表達(dá)式,如case(a>100)是不行的,可以用if ···else···語(yǔ)句來(lái)達(dá)到目的
7.case后面的數(shù)字直接跟就可以,如case 1,不用加單引號(hào),否則會(huì)被認(rèn)為是字符!那么就會(huì)與數(shù)字的ASCII碼進(jìn)行比較。
簡(jiǎn)言之,你定義的switch接收的是整型還是字符型,后面case對(duì)應(yīng)的取值判斷時(shí),也會(huì)把它轉(zhuǎn)換成整型或者字符型的再去和輸入比較。
case 后面跟的是switch(a)中這個(gè)變量a的可能的具體取值,
例如:
case 1:
······; break;
是當(dāng)a==1時(shí)的處理情況。
驗(yàn)證的代碼如下:
#include<iostream> using namespace std; const int N=1005;int main() {//int a;char a;while(true){cin>>a;switch(a){case 1:cout<<"case 1!"<<endl; cout<<"case 1!!"<<endl; break; //不用寫花括號(hào)將case之后的語(yǔ)句括起來(lái)case '2': //與2的ASCII碼比較{ cout<<"case 2!"<<endl; break; }// case b:// { cout<<"case b!"<<endl; break; } // 這樣寫不可以,會(huì)報(bào)錯(cuò):[Error] 'b' was not declared in this scope //編譯器將b當(dāng)作變量對(duì)待case 'b':{ cout<<"case 'b'!"<<endl; break; }/* case "6": // 不可以,只能接收字符型或整型,不能是字符串常量{ cout<<"case "b"!"<<endl; break; } *//* case (a>100): // [Error] the value of 'a' is not usable in a constant expression{ cout<<"case a>100!"<<endl; break; } //不能是表達(dá)式,表達(dá)式可以用if else語(yǔ)句來(lái)寫 */case (7): //case后面可以加括號(hào),也可以不加cout<<"case 7!"<<endl; break;default:cout<<"case 默認(rèn)!"<<endl; //default后不用加break}}return 0; }總結(jié)
以上是生活随笔為你收集整理的switch在C++中的用法以及用switch结构时要注意的问题(细节问题比较全面)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 函数中参数有数组时注意的小问题(不一定要
- 下一篇: C++中的变量不初始化是什么结果?(整型