C语言中, char 没有signed和unsigned修饰时, 具体是否有符号取决于实现, 作者说, 一个错误认识是:
如果c是一个字符变量, 使用(unsigned)c就可得到与c等价的无符号整数. 这是会失败的.
char c = 128;
printf("Hello, world:[%u]\n", (unsigned int) c );
我在VC2008上试验, 得到的结果是
4294967168
原因是, (ungisned int)是强制类型转换, 它也是个运算符, 而运算符作用于char时, 会先把它转换为int, 再实施强制的类型转换.
作者建议的做法是
(unsigned char)c, 原因是unsigned char类型的字符在转换为无符号整数时无需首先转换为int型整数.
阅读(1123) | 评论(0) | 转发(0) |