分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
switch語句在c或c++語言中是非常普通的乙個語句了,而且我們也是經常用到的。而且我們使用的switch語句都是和case、default、break等語句一起使用的。
switch語句的使用可以非常的簡單,也可以非常的複雜,所以你可以看到下面的一些另類的使用。
首先問一下的是:你知道switch文法是怎麼定義的嗎?
學過《編譯原理》的人都知道,我們要寫某個語言的編譯器就得定義這個語言的乙個文法,這樣我們才可以根據定義好的文法來寫編譯器,而c、c++的switch語句的文法的定義很簡單,如下:
switch(expression) statement
看下上面定義的文法,switch語句就是switch關鍵字後面接左括號,之後是表示式,之後是右括號,後面在跟語句塊。
所以這個switch語句是很簡單的,那麼我們可以根據這個文法寫下下面這樣的**:
view plaincopy to clipboardprint?
01.#include
02.int main(int argc, const char *argv)
03.
#include
int main(int argc, const char *argv)
編譯輸出: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卻不一定要在語句塊中的第一層,所以我們可以寫成這樣:
view plaincopy to clipboardprint?
01.#include
02.int main(int argc, const char *argv)
03.
16. else
17.
24. }
25.
26. printf("i=%d/n", i);
27. return 0;
28.}
#include
int main(int argc, const char *argv)
else
}printf("i=%d/n", i);
return 0;
} 編譯輸出:i = 8;
由於case的實現,其實從彙編角度來說就是跳轉語句,所以可以使用下面那樣風格的**:
view plaincopy to clipboardprint?
01.#include
02.#define new 1
03.#define del 2
04.
05.int main(int argc, const char *argv)
06.
20. else
21.
26. default:
27. break;
28. }
29. printf("p = %d, pi = %d/n", *p, *pi);
30. return 0;
31.}
#include
#define new 1
#define del 2
int main(int argc, const char *argv)
else
default:
break;
}printf("p = %d, pi = %d/n", *p, *pi);
return 0;
} 編譯輸出:p = 2, pi = 3
雖然,上面的**沒有什麼實際的意義,但是也可以看到另類的switch語句的用法,switch語句的用法關鍵就是後面的語句塊,這個語句塊是可以靈活的運用以達到靈活使用switch語句的目的。
給我老師的人工智慧教程打call!
C 中的switch語句
switch語句在c或c 語言中是非常普通的乙個語句了,而且我們也是經常用到的。而且我們使用的switch語句都是和case default break等語句一起使用的。switch語句的使用可以非常的簡單,也可以非常的複雜,所以你可以看到下面的一些另類的使用。首先問一下的是 你知道switch文法...
C 語句 switch語句
switch 語句選擇乙個要執行的語句列表,此列表具有乙個相關聯的 switch 標籤,它對應於 switch 表示式的值.switch statement switch expression switch block switch block switch block 一組switch secti...
java中的switch語句
選擇語句 switch語句 編寫格式 switch 表示式 執行流程 表示式和case後面的常量進行比較 和哪個常量相同,就執行哪個case後面的程式,遇到break,就全部結束 關鍵字 swidth case default break switch語句中表示式的資料型別,根據不同的jdk版本,有...