Switch語句的乙個坑 乙個妙用

2021-07-04 04:30:46 字數 804 閱讀 7437

switch有乙個坑比較容易踩,在這裡記錄提醒自己。

如下**請問輸出什麼?

如果你覺得答案是:

i:2那就錯了。

要注意,switch語句到case語句之間的**是不會執行的。

直接略過,所以case挨著switch寫好了:)

switch語句通常我們慣性思維case都是從下到大1-n種情況排列下來,

不過不要忘記case是可以倒著從大往小寫的。

如,求某日期是該年的第幾天可以從12月倒著往下寫:

int getdaysinyear1(int

year,int

month,int

day)

return sum_days;

}

這樣寫比順著從小往大寫可以減少很多if判斷。

當然,用陣列對映月份日期更簡潔:

int getdaysinyear2(int

year ,int

month,int

day)

; for ( i = 0; i < month-1; i++)

sum_days += day;

((year%4==0 && year%100!=0)||(year%100==0&&year%400==0))?sum_days++ :sum_days;

return sum_days;

}

go語言乙個switch的坑

今天遇到乙個案例,挺有意思,而且難以置信 func alwaysfalse bool func main 猜一下輸出什麼?對,你猜錯了,真實輸出為true。看到這有一種罵娘的衝動,為啥呀,明明是false的呀。別急,咱們改一下,你要的false就出來了。func alwaysfalse bool f...

MySQL UPDATE 語句乙個「經典」的坑

目錄 有人問,比如下圖 問題歸納起來就是 在mysql裡面update一條記錄,語法都正確的,但記錄並沒有被更新.剛遇到這個問題的時候,我拿到這條語句直接在測試庫裡面執行了一把,發現確實有問題,但和開發描述的還是 有區別 這裡我用測試資料來模擬下 執行之後的記錄是 可以看到,結果並不像這位開發同學說...

Python的乙個坑

今天發現了python乙個坑。我們知道python中函式跟c 一樣,可以設定預設引數,比如 def func x,y 1 print x,y func x 10 10 1 y有乙個預設值1,所以函式呼叫的結果是列印10 1 但是如果預設值是這樣的 class food def init self s...