Re: [閒聊] 程式大師請進

作者: Wardyal (Wardyal)   2024-01-30 18:02:54
剛剛De了一個Bug
就錯誤的case存不下來
後來發現他是用一個char來存的
具體寫法就是 0000 0001 << f 去推
f 是多少就代表哪個case有問題
例如第二個case有問題
就 0000 0001 << 1 = 0000 0010
結果現在因為測項越來越多 一共有9個
所以 f = 8 的情況
會推成 0000 0000 就 1 被推到溢位了
所以會被當成 第1(0)個case
我原本是想直接改成int來存 就哪個case有問題就存多少
可是感覺不太好
阿 有什麼推薦的寫法嗎
作者: MurasakiSion (紫咲シオン)   2024-01-30 18:12:00
錯誤會同時發生嗎 不會的話他這個寫法很沒意義欸
作者: Wardyal (Wardyal)   2024-01-30 18:13:00
不會 只會發生一個還好吧 他這樣用4byte就可以存了 還是有更好的方法
作者: MurasakiSion (紫咲シオン)   2024-01-30 18:15:00
繼續用char啊 只是不需要做這種第幾個bit 當int用這做法沒有多重錯誤就是浪費空間只是你要確定不會影響到別的地方欸
作者: Wardyal (Wardyal)   2024-01-30 18:22:00
應該不會吧可是我第9個case要怎麼判斷推8bit就變回0000 0000多寫一個判斷當f>=8就推2嗎
作者: MurasakiSion (紫咲シオン)   2024-01-30 18:24:00
不是啊 就直接存數字==就像你講的用int 但不需要那麼大空間char本質不也是一個byte的數字而已
作者: SecondRun (雨夜琴聲)   2024-01-30 18:36:00
只會發生一個是在搞笑喔
作者: chuegou (chuegou)   2024-01-30 19:41:00
通常是複數發生才這樣存 如果不改這個邏輯 然後已經塞不下了 那就共用 比如說bit7同時代表A或B錯誤 bit7為1的時候 你要去另一個變數確認是A錯誤還是B錯誤

Links booklink

Contact Us: admin [ a t ] ucptt.com