Chinaunix

标题: 请教C类型转换?? [打印本页]

作者: linfenghuaster    时间: 2010-08-28 22:05
标题: 请教C类型转换??
在面试宝典里有道题
  1. unsigned char a = 0xa5;
  2. unsigned char b = ~a >> 4;

  3. printf("b = %d\n", a);
复制代码
~运算符优先级比 >> 高,那么对a取反的时候,要不对a 先进行类型提升啊? 迷惑了。
作者: tempname2    时间: 2010-08-29 09:13
不太清楚。

貌似出现在表达式里的char全都要类型提升,unsigned char提升为啥就不知道了。移位以后再转回char。
作者: bruceteen    时间: 2010-08-29 09:23
要!
但,提升 还是 不提升 对你的结果不影响
作者: daybreakcx    时间: 2010-08-29 10:26
话说你最后怎么还是输出a啊~~
作者: linfenghuaster    时间: 2010-08-29 12:50
回复 4# daybreakcx
打错了,呵呵。输出是b.
作者: linfenghuaster    时间: 2010-08-29 12:53
回复 2# tempname2


    unsigned char 应该提升成 int
作者: linfenghuaster    时间: 2010-08-29 12:56
回复 3# bruceteen


    哦,3q.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2