我想测试从数据文件中读取的字节是否为0xEE,应该怎么做? 我尝试过if (aChar == 0xEE)
,但似乎不起作用。
当读取有符号字符时,其值永远不会是0xEE。即:
#include <stdio.h>
int main()
{
char c = 0xEE; // assumes your implementation defines char as signed char
// c is now -18
if (c == 0xEE)
{
printf("Char c is 0xEE");
}
else
{
printf("Char c is NOT 0xEE");
}
}
Char c is NOT 0xEE
读取有符号字符时,其值范围为-0x7F至0x80。无符号字符从0x00到0xFF进行解释,通常用于“原始”字节。
更改:
char aChar;
为了
unsigned char aChar;
并且它应该能够正常工作。
char
是带符号的类型,那么char c = 0xEE;
会导致c
成为一个负值(-18),测试c == 0xEE
将总是失败。由于十六进制整数字面量0xEE
是类型为int
的,因此用于比较时char
将被提升为int
。 -18 != 238
. - James McNellisif( aChar == '\xee' )