【发布时间】:2014-11-29 00:57:22
【问题描述】:
我正在从文件中读取原始二进制文件并想检查数字是否为0xFFFFFFFF。
#define LAST 0xFFFFFFFF
unsigned long data;
//...give value to data
if(data == LAST)
这与LAST 被定义为4294967295 的结果不同,0xFFFFFFFF 的无符号基数为 10 表示。但是,我注意到如果将0xFFFFFFFF 替换为-1,则会给出正确的结果。这是为什么呢?
【问题讨论】:
-
算术转换...
-
@KerrekSB 为什么要转换它?因为 0xFFFFFFFF 可以放入 unsigned long 没有问题,所以知道是否正在转换某些东西是不是有点模棱两可。
-
内置运算符表达式仅在同类类型上定义。您必须有办法将两个操作数转换为通用类型。