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