C语言类型转换结果?
《C语言核心技术》
转换成_Bool以外的无符号整数类型
对于一个正整数的值来说,常常有必要减去(USHRT_MAX+1),使得值落入新类型的范围内,这样的做法如同除以(USHRT_MAX+1)来求余数,如下面的范例所示:
- C/C++ code
#include <limits.h>unsigned short n =0; n=0xFEDCBA; // int 转 unsigned short int /* 16位计算机: 0xFEDCBA - (USHRT_MAX+1)=16702650-(65535+1) = 16637114 =0xFDDCBA 书本上的结果是:DCBA,计算的结果与书上不同,为什么呢? */
如果unsigned short是16位长,那么其最大值USHRT_MAX+1就是16进制的FFFF。当FEDCBA的值被转换成unsigned short,结果就和除以16进制的10000(USHRT_MAX+1),再取余数一样,结果一定是FFFF或更少。
在这个例子中,被赋值给n的值是16进制的DCBA。
--------------------------------------------------------------------
这句话是什么意思?
谁详细说说!
[解决办法]