比如unsigned long long a = 0;
char b = 0x80;
a = (unsigned long long)b;
这样a的值是一个很大的数,除非你这样做,
a = (unsigned long long)(b & 0xff);
原因是当b与0xff做与运算时,系统会分配一个int类型的临时变量存储结果,这样把int再转换为unsigned long long时就没有问题了,因为最高位不再是1。
比如unsigned long long a = 0;
char b = 0x80;
a = (unsigned long long)b;
这样a的值是一个很大的数,除非你这样做,
a = (unsigned long long)(b & 0xff);
原因是当b与0xff做与运算时,系统会分配一个int类型的临时变量存储结果,这样把int再转换为unsigned long long时就没有问题了,因为最高位不再是1。