unsigned char和char在内存中都是一字节,区别是有无符号位。
bug举例
在一次使用sunday算法时,遇到了中文内存越界的问题。
其中算法中有个计算移动量的数组move[(unsigned int)c] = xxx
.
c是char类型,实际存的值是0xba。
因为符号位的存在,导致(unsigned int)c == 4294967226
总结
1 | char c = 0xba; |
存bytes时用unsigned char为佳,转换时字节数匹配,uint8_t
unsigned char和char在内存中都是一字节,区别是有无符号位。
在一次使用sunday算法时,遇到了中文内存越界的问题。
其中算法中有个计算移动量的数组move[(unsigned int)c] = xxx
.
c是char类型,实际存的值是0xba。
因为符号位的存在,导致(unsigned int)c == 4294967226
1 | char c = 0xba; |
存bytes时用unsigned char为佳,转换时字节数匹配,uint8_t