C++ switch

switch語句在c或c++語言中是非常普通的一個語句了,而且我們也是經常用到的。而且我們使用的switch語句都是和case、default、break等語句一起使用的。

switch語句的使用可以非常的簡單,也可以非常的複雜,所以你可以看到下面的一些另類的使用。

首先問一下的是:你知道switch文法是怎麼定義的嗎?

學過《編譯原理》的人都知道,我們要寫某個語言的編譯器就得定義這個語言的一個文法,這樣我們纔可以根據定義好的文法來寫編譯器,而c、c++的switch語句的文法的定義很簡單,如下:

switch(expression) statement

看下上面定義的文法,switch語句就是switch關鍵字後面接左括號,之後是表達式,之後是右括號,後面在跟語句塊。

所以這個switch語句是很簡單的,那麼我們可以根據這個文法寫下下面這樣的代碼:

編譯輸出:i=3

我們看到上面的代碼在使用switch時是很簡單的使用的:

switch(表達式)

語句

我們看到switch表達式中的i沒有匹配,所以輸出的i的值還是3。

由於switch後面是個語句塊,所以我們的表達式就可以寫成這樣:

switch(i)

{

i=2;

}

這樣用{}來框取一個語句塊。

我們想要i=2;這個語句,就加上default:

switch(i)

{

default:

i=2;

}

switch語句的文法的定義是簡單的,但statement語句塊的定義就不那麼簡單的了,我們可以非常靈活的使用這個語句塊來非常靈活的使用switch語句。

我們看下switch和case使用的情況:

switch(i)

{

default:

i=2;

case 1:

printf("a=1\n");

break;

}

case後面一定是要一個整數,或是可以轉換成整數的對象。但case卻不一定要在語句塊中的第一層,所以我們可以寫成這樣:

編譯輸出:i = 8;

由於case的實現,其實從彙編角度來說就是跳轉語句,所以可以使用下面那樣風格的代碼:

編譯輸出:p = 2, pi = 3

雖然,上面的代碼沒有什麼實際的意義,但是也可以看到另類的switch語句的用法,switch語句的用法關鍵就是後面的語句塊,這個語句塊是可以靈活的運用以達到靈活使用switch語句的目的.

http://software.intel.com/zh-cn/blogs/2010/05/04/c-switch/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章