当比较两个变量时,它们的数据类型和大小会影响比较的结果。因为无符号short int有16位,无符号char只有8位,所以在比较时,char值会被自动转换为short int。对于char来说,它只使用了8位中的前8位,在与short int的比较中,后面的8位将被填充为0,即比较的是short int中的前8位和char的前8位。具体解决方法是可以将char值转换为short int,或者取出short int高8位进行比较。下面给出示例代码:
unsigned short int a = 0x0102; unsigned char b = 0x02; if ((unsigned short int)b == a) { printf("equal\n"); }
unsigned short int c = 0x0102; unsigned char d = 0x01; if ((d << 8) == c) { printf("equal\n"); }
上一篇:比较C语言中命令行参数的长度