>第 16 章 运算符详解>位运算>移位运算>习题

him 280810265@qq.com
2002-10-29 06:32:50

0xcfffffff3<<2;
我的结果为ffffffcc


nash 469693048@qq.com
2009-09-23 14:45:22

请问i的类型不是被提升为unsigned int 型了吗?


宋劲杉 songjinshan@gmail.com
2009-09-24 20:57:09

这个问题我不解释了。回去重看。


王文箫 wwp8912@163.com
2010-03-12 10:01:14

敬服 这数字真实太奇妙了
第一个转型为unsigned int


haitao mysuim@gmail.com
2010-03-15 20:33:49

int i = 0xcffffff3;
因为这个变量是个有符号数,所以在做右移运算时候要考虑正负。
'如果是负数,那么高位移入1还是0不一定,这是Implementation-defined的。对于x86平台的gcc编译器,最高位移入1,也就是仍保持负数的符号位,这种处理方式对负数仍然保持了“右移1位相当于除以2”的性质。'
所以在x86平台上就是高位移入1了。


tangfei tangfei518@sina.com
2010-11-24 17:34:39

0xcffffff3是unsigned int,正数直接打印补0,所以第一个结果是0x33fffffc;
但i是int,int i = 0xcffffff3属于Implementation-defined。所以第二个结果因平台而异。


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!