Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2359242
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: C/C++

2010-08-01 13:05:22

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) |
给主人留下些什么吧!~~