switch語句的一點收穫

記得看一段windows上的代碼時遇到過這樣的情況:在switch語句中得所有case之前加入了一個if語句的判斷,當時很奇怪爲什麼在任何條件下都沒有執行,後來才明白是自己理解錯了switch的語法。

switch語句的語法如下:

	switch(expression)
	{
	case constant1:
		statement sequence;
		break;
	case constant2:
		statement sequence;
		break;
		...
	default:
		statement sequence;
		break;
	}

語法會對expression進行case上的匹配,匹配成功則直接執行對應case中的語句,並不會流程般的執行其上或下得語句。

列舉一個實例:

# include <stdio.h>

void main()
{
	char ch;

	scanf("%c", &ch);

	switch(ch)
	{
		printf("test switch\n");	/*這條語句是不會被執行到的*/
	case 'a':
		printf("case : %c\n", ch);
		break;
	case 'b':
		printf("case : %c\n", ch);
		break;
	case 'c':
		printf("case : %c\n", ch);
		break;
	default:
		printf("case : not a/b/c\n", ch);
		break;
	}
}

執行情況如下:

可以看到,case之上的語句雖然在所有的case之前,但是switch匹配後並沒有執行printf語句。

 

發佈了31 篇原創文章 · 獲贊 24 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章