大家都知道switch 語句中的 expression 必須是一個整型或枚舉類型,或者是一個 class 類型,其中 class 有一個單一的轉換函數将其轉換為整型或枚舉類型。
很多情況下需要用到case區間判斷,比如0-3的,大家可能回寫成這樣:
case 0:
case 1:
case 2:
case 3:
func();
break;
今天發現還有這種寫法,用起來還是很有優勢的,用的好可以減少寫代碼、編譯等時間。
但是這個方法不一定在所有編譯器下有效,我這邊用的是gcc 4.8.5,代碼如下沒有問題。
#include <iostream>
int main(int argc, char* argv[])
{
int i = 5;
switch (i) {
case 0 ... 3:
std::cout << "0-3: " << i << std::endl;
break;
case 4 ... 6:
std::cout << "4-6: " << i << std::endl;
break;
case 7 ... 9:
std::cout << "7-9: " << i << std::endl;
break;
case 10:
std::cout << "10" << i << std::endl;
default:
break;
}
return 0;
}