tft每日頭條

 > 圖文

 > c語言中switch用法舉例

c語言中switch用法舉例

圖文 更新时间:2024-07-26 03:59:46

switch語句反彙編

一、switch語句1、在正向編碼時,switch語句可以看做是if語句的簡寫

c語言中switch用法舉例(c語言switch反彙編)1

2、break在switch語句的妙用

1、當switch存在3個分支時

c語言中switch用法舉例(c語言switch反彙編)2

c語言中switch用法舉例(c語言switch反彙編)3

二、switch語句的反彙編1、當switch存在3個分支時

c語言中switch用法舉例(c語言switch反彙編)4

c語言中switch用法舉例(c語言switch反彙編)5

c語言中switch用法舉例(c語言switch反彙編)6

2、當switch語句出現四個分支時,編譯器會産生大表

步驟:

1、将傳進來的數先減去1,再進行比較。判斷出該參數是否超過switch語句中最大常量還,即判斷參數是直接進入default中還是進入case中

2、 若參數<=max,則用寄存器保留該值。并代入表達式中,通過大表直接跳到相應的地址

注意

分支少于四個,則switch無意義,編譯器會按if…else…語句進行反彙編

case後的常量的順序不影響大表的生成

将常量值的順序打亂,觀察反彙編代碼

正向代碼

c語言中switch用法舉例(c語言switch反彙編)7

彙編代碼

c語言中switch用法舉例(c語言switch反彙編)8

這裡可以看到大表裡面都是自己排好序了。

将連續的10項中抹去1項或者2項,觀察反彙編有無變化

正向代碼是這樣的

c語言中switch用法舉例(c語言switch反彙編)9

這裡可以看到有幾個地址是一樣的

c語言中switch用法舉例(c語言switch反彙編)10

可以發現是指向默認的地址。

c語言中switch用法舉例(c語言switch反彙編)11

3、當switch存在多個分支,常量連續性相對不高時

c語言中switch用法舉例(c語言switch反彙編)12

就會生成小表

c語言中switch用法舉例(c語言switch反彙編)13

步驟:1、将傳進來的參數減去最小值,然後跟最大值相比,如果大于的話就跳到默認的地方,不然就用差值去查小表,然後查大表。

補充:當case後的常量差距較大時

編譯器按照if…else…進行反彙編

另外果果為大家帶來了

C/C 的學習基礎教程及相關資源

(僅僅是部分截圖哦)

c語言中switch用法舉例(c語言switch反彙編)14

資料領取方式:
  1. 關注本号
  2. 私信“111”即可獲取領取方式哦

點擊下方“擴展連接”也可以很快找到小編,同更多小夥伴一起交流哦~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved