1. 程式人生 > >C++中的switch語句的break問題

C++中的switch語句的break問題

今天筆試360了,再次遇到這個簡單但是又容易出錯的問題。

首先看下正確的寫法:

int main()
{
	int i;
	for(i=0;i<3;i++)
	{
		switch(i)
		{                               //switch語句一定加大括號
			case 0:                 //注意格式 case 0: 這裡不用加大括號
				cout<<i;
				break;          //每個case後要break
			case 2:
				cout<<i;
				break;
			default:
				cout<<i;
				break;
		}
	}
	system("pause");
	return 0;
}
程式輸出是:012
加break的意思是說,找到合適的case執行後,下面的case就不再執行,而是退出當前switch語句。

-------------------------------------------------------------------------------------------------------------------------------------------------

容易考到的點是不加break會怎樣?

看下面程式碼。

int main()
{
	int i;
	for(i=0;i<3;i++)
	{
		switch(i)
		{
			case 0:
				cout<<i;
			case 2:
				cout<<i;
			default:
				cout<<i;
		}
	}
	system("pause");
	return 0;
}

程式輸出是000122
int main()
{
	int i;
	for(i=0;i<3;i++)
	{
		switch(i)
		{
			case 0:
				cout<<i;
			case 2:
				cout<<i;
				break;
			default:
				cout<<i;
		}
	}
	system("pause");
	return 0;
}

程式輸出是0012

結論:就是說找到適合的case前不執行,找到對應case後都執行,直到遇到break或者switch語句結束!