字符是有符号整数还是无符号整数
现代计算机大多数都支持8位字符。但是当我们把字符的值从char类型转换为int类型时,应该把它当成有符号char类型还是无符号char类型至关重要,因为两者的取值范围不同。
若将char转换为无符号整型,则直接在多余的位上填0即可。若转换成有符号整型,则需要将符号位复制
不同的编译器对此处理方法不同。一些可能会将char当作无符号类型处理,而一些会当成有符号类型。
为了提高可移植性,最好的办法就是将char声明成无符号型或有符号型
注意:以下代码产生问题
char c;
(unsigned) c;
这段代码是错误的,因为在将c转换为无符号整型时,会先将c转换成int型,再转换成无符号整型
因此,正确的写法是:
(unsigned char)c;
移位运算符
在向右移位时,空出的位是由0填充还是由符号位的副本来填充?
因此,如果想让填充的数为0,可以先将变量转换为无符号数。
移位计数允许的取值范围是什么?