A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  现代大多数计算机都支持8位字符,所以大多数C语言编译器都把字符实现为8为整数。但是,这并不意味着所有的编译器都使用这个方法。
  当需要把一个字符转换为一个较大的整数时,问题就来了:将字符作为有符号数呢?还是作为无符号数呢?
  如果作为有符号数,要将char类型的数扩展到int类型时,同时还得复制符号位,而如果是作为无符号数,则只需要在多余的位上补0。而且前者意味着一个8为字符的取值范围是-128~127,而后者的范围则是0~255,所以会反过来影响到哈希表的设计方式。
  解决方法是:将字符声明为无符号字符(unsigned char),这样转换使只需要在多余的位补0。否则,在某些编译器上可能会作为有符号数处理,而另一些处理器上又会作为无符号数处理。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马