char是signed还是unsigned由实现决定,但是char又区别于signed char和unsigned char。那么C标准和C++标准里对char c = 255到底是怎么处理的?比如在某些实现里(比如x86和x64)默认是signed,那么char c = 255就超出了signed char的表示范围,这是未定义的行为。
我现在遇到一个问题,sha256值(32字节)存在char数组里,我把数组的每个元素与0xFF进行异或,然后再把结果的每个元素与xFF进行异或,这时最终结果跟原sha256值还能保证一定一致吗?
这个是编译器实现中的规定吧,为了防止这样的问题,你自己明确用无歧义的变量类型啊,比如
unsigned char
或者
unsigned INT8
或者
UINT8