switch語句-穿透效果


switch語句是我大學學c語言的一個痛點之一,現在拿來再看,終於理解了。

  【c語言的switch語句是穿透的】這句是理解switch語句的關鍵:也就是說當程序判斷某個case的條件為真后,它將在執行該case所帶的的語句塊之后,不再對后面的case的條件進行判斷而直接執行。

  

測試程序(Java代碼):

	//switch
		System.out.println("test switch:");
		char level='c';
		switch(level){
		case 'a':
			System.out.println('a');
		case 'b':
			System.out.println('b');
		case 'c':
			System.out.println('c');
		case 'd':
			System.out.println('d');
		default:
			System.out.println('end');	
		}

  執行結果:

test switch:
c
d
end

【2018.4.10補充語義說明與圖解】

  其語義是:計算表達式的值。 並逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時, 即執行其后的語句,然后不再進行判斷,繼續執行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執行default后的語句。

  圖解:

 

————————————————————————————————————————————————————————————————

關於switch語句提前說明幾點:

switch語句后面跟的 表達式的類型 必須是整型或可以轉換為整型的表達式或類型:

  1.    可以放一個整型的變量 :int num = 10;  switch (num)
  2.     可以放一個整形常量:switch (10)
  3.     可以放一個返回值是整型的表達式: switch (5+5),num = 5+5
  4.     還可以放可以轉換為int類型的表達式:switch ('a')   case 97

關於case  使用注意事項
case語句可以有多個

  1. case語句格式: case  常量表達式: (空格和冒號不能省)
  2.   可以是常量  case 10:
  3.   如果放表達式,那么只可以是常量表達式 case 5+5:
  4.   default語句的位置可以任意放
  5.   case的穿透問題,同樣適用於 default
  6.   如果default語句放到 switch語句的最后,可以不加break
  7.   如果不是放到最后,是必須加上break的
  8.   case 后面不能是實數  (單精度,雙精度都不可以)
  9.   case 語句之后,默認的第一句話不能定義變量
  10.   如果第一句話非要定義,應該加上大括號

以上內容參考http://blog.csdn.net/u013977285/article/details/47453159?locationNum=1&fps=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM