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