C语言中字符常量'\xA2'对应的数值为什么是102.我用C运行出来是-94,自己算出来是162,答案是102,为啥 .

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 19:26:14

C语言中字符常量'\xA2'对应的数值为什么是102.我用C运行出来是-94,自己算出来是162,答案是102,为啥 .
C语言中字符常量'\xA2'对应的数值为什么是102.
我用C运行出来是-94,自己算出来是162,答案是102,为啥 .

C语言中字符常量'\xA2'对应的数值为什么是102.我用C运行出来是-94,自己算出来是162,答案是102,为啥 .

之所以用C语言运行出来是因为你肯定用了char类型字符.(最大值是127)

char类型字符是有符号类型,‘\xA2’转为二进制则是:

10100010(最高位为1,意味着这个是一个负数).

获取负数的绝对值的方法是:各位取反,末位加一:

各位取反:

01011101

末位加一:

01011110

十进制就是94,所以运行结果是-94.

如果想正确转,可以使用unsigned char类型,或者使用共用体:

typedef union _A
{
char a;
int s;
}A;
int main()
{
A aa;
aa.s=0;//把aa初始化为0
aa.a='\xA2';
printf("%d",aa.s);
return 0;
}

至于答案为什么写的是102,要么答案错,要么你给的题目不完整.但我觉得答案错的可能性更大,因为答案的思路很可能是10*10+2,把十六进制误当做成10进制.