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进制.