C語言中switch case的型別比較機制

2021-06-23 08:42:10 字數 349 閱讀 4973

看下面的**:

int func(char i)

}int main()

else

}

最終輸出的應該是bingo還是miss呢?

按照分析,在呼叫func函式中a會被強轉為有符號數,也就是說func函式中i是乙個負數,switch case 在比較時是將switch的變數和case的變數都轉換成int進行比較,負數與整數比較,應該返回0並列印miss。

在rhel as 6(核心版本2.6.18)上的測試結果也是這樣,但是在另外一種作業系統great turbo 10(核心版本2.6.9),func卻返回0,列印bingo。

參考:

C語言中switch case使用

include include includeint main system pause 1.在c中,case和default只是作為乙個入口使用,default最後判定,意思是當所有case 條件均不滿足時,執行default,前提是沒有使用break 中斷 2.例如輸入b 1時,執行case1,...

C語言中的switch case比較

switch case 在比較時是將switch的變數和case的變數都轉換成int進行比較。直觀點的話看下面 include int func char i switch i int main int argc,const char argv else return 0 可以猜一下,輸出是什麼 在...

C語言中的switch case 語句

1 switch case 語句的學習 當事件的選擇大於或等於4種的時候就用switch case語句 switch 表示式 1 將表示式的值與case後面常量n的值進行比較,與那個值相等,就進入那條語句體,執行完後,由於有break語句,則退出switch語句 例 表示式2,則執行case 2 b...