色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

老師說,C語言中的switch和if語句是等價的,能舉例子說說嗎?要注意什么嗎?

夏志豪2年前20瀏覽0評論

謝邀。

嚴格來說,C語言中的switch語句和if語句并不總是完全等價,使用switch語句實際上是有一定限制的。

下文將舉例子解釋

相信題主已經對if/else以及布爾代數有了比較深入的認識,可以對現實世界中的復雜問題,分情況處理了。事實上,在C語言中,還有一種分支語句,就是switch語句,在介紹它之前,先來考慮這個問題:

輸入1-7七個數,程序要對應著分別打印出Monday-Sunday(星期一到星期天)。

這樣的問題,用if/else語句非常容易解決,請看如下代碼:

以上代碼很好的解決了問題,不過使用C語言中的switch語句也是能夠非常簡單的解決問題,switch語句可以產生具有多個分支的控制流程,它的格式是:

知道了C語言switch語句的格式后,使用它重寫上述代碼就簡單了,請看:

上面的例子我們傳給print_day的參數是2,所以從“情況2”(case2)處開始執行,然后打印“Tuesday”,接著break。break是C語言中的關鍵字,它的作用是挑出整個switch語句塊。C語言規定各case的常量表達式必須互不相同,各case均不等于常量表達式,則進入default分支。

使用switch語句要注意幾點

  • case后面跟的必須是常量表達式,因為這個值必須在編譯時計算出來。
  • case后面跟的常量表達式的值必須是整型,因為浮點型是不能精確比較相等不相等的,整型或字符型則可以,這是由不同類型數據的存儲方式決定的。
  • 進入case后如果沒有遇到break語句就會一直往下執行,后面其它case或default下面的語句也會被執行到,直到遇到break,或者執行到整個switch語句塊的末尾。

通常每個case后面都要加上break語句,但有時候故意不加break來利用這個特性,例如:

這樣一來,輸入1-5都會輸出“Weekday”(工作日),輸入6、7則會輸出“Weekend”(周末)。

switch語句不是必不可缺的,顯然可以用一組if..elseif…elseif…else代替,但是一方面用switch語句會使代碼更清晰,另一方面,有時候編譯器會對switch語句進行整體優化,使它比等價的if/else語句所生成的目標代碼效率更高。

另外,由于switch語句的case后要求是常數,限制了其使用范圍,所以要用其替換

if...else

語句,需要保證if的條件是常數表達式。如果條件表達式很難寫成常數表達式,switch語句就很難使用了。

不過工具是死的,人是活的,switch語句和if語句各有優缺點,只要掌握了,我們應該總是能夠根據實際條件靈活的寫代碼的。

歡迎在評論區一起討論,質疑。文章都是手打原創,每天最淺顯的介紹C語言、linux等嵌入式開發,喜歡我的文章就關注一波吧,可以看到最新更新和之前的文章哦。