char类型的有符号和无符号

char类型的有符号和无符号

char是很多语言里的字符类型,比如c++/java。在c++中,char默认是有符号类型(signed)的,但是为什么一个字符要分有符号和无符号呢?这有什么区别或者有什么意义吗?

我开始的时候也总是不明白。查了很多资料发现一个不错的解释

以C++中的char为例:因为C++中的字符编码是ASCII编码,只有0-127有对应字符。而0-127只需要7个bit位就可以表示了,但是计算机存储一般用字节作为最小单位会比较高效,所以char类型是用一个字节存储的,那么多出来的那一个比特位就可以用于表示正负号。当使用有符号的char类型时,char对应的二进制数字范围是 [-128, 127] ,虽然负数部分没有对应的字符,但是仍然能转换成int类型打印出来:

char c = -1;

int i = c;

cout<

至于无符号char类型,也是同样的,对应的二进制数字范围是 [0, 255] ,其中128-255都是没有对应字符的,但是可以转为int输出。

unsigned char c = 255;

int i = c;

cout<

但是,还有一个疑问,为啥多出来一个比特位就一定要用于表示符号,多出来的那个比特位直接无视不好么。

我猜测是c++比较nb,为了实现更多的功能hhhhh

相关推荐

开灯次数影响灯的使用寿命吗?
365娱乐游戏是什么

开灯次数影响灯的使用寿命吗?

📅 07-08 👁️ 4353
飞傲的K17觭码怎么样?
365娱乐游戏是什么

飞傲的K17觭码怎么样?

📅 07-02 👁️ 4519
元稹《菊花》
base365

元稹《菊花》

📅 06-29 👁️ 8457