漫谈:C/C++ char 和 unsigned char 的用途
C/C++的字符默认是有符号的,这一点非常的不爽,因为很少有人用单字节表达有符号数,毕竟,ASCII码是无符号的,对字符的绝大多数处理都是基于无符号的。
这一点在其它编程语言上就好很多,基本上都提供了byte这种类型专门表达无符号字节。
如果程序只是使用字符串,那么有符号无符号是无所谓的,但是一旦涉及到算数处理,一定要严格使用有符号和无符号。涉及到的处理包括大小比较、加减乘除、位运算、移位等。
处理网络协议、串口数据等基本上都是基于无符号的。
我遇到过很多次因为有符号无符号转换错误导致的BUG。
(这里是结束)