ascii码值为负数_C语⾔字符型数据的ASCII码值为何是负数?有如下⼀段C语⾔程序:
#include "stdio.h"
int main(void)
{
char a = 0xC8;
printf ("字符a的ASCII码值的10进制是%d\n", a);
return 0;
}
程序定义了⼀个字符‘a’,并且赋予了初始值“0xC8”,这是⼀个16进制的数。最后,通过printf函数输出字符a的值。
程序不难,光看程序,也应该知道最终的结果。16进制“0xC8”的10进制数是200,所以程序应该输出字符a的ASCII码值是200吧。实际运⾏结果如下:
结果是-56,还是个负数,C语⾔初学者估计⼀头雾⽔了。
其实字符a在定义时如果就写⼀个“char”,则就默认类型是“signed char”,也就是说字符a的10进制ASCII码值是有符号的,取值范围是【-128,127】,那么200这个数肯定就超过这个范围,超过的部分是200 – 127 = 73。那么超过的部分⼜从-128开始计数了,也就是-128 + 73 - 1 = -56了。
如果在定义字符a时,类型写成“unsigned char”,那么旧标明字符a的10进制ASCII码值是⽆符号的,取值范围就是【0,255】了。朋友们可以修改下程序看看结果是什么。
下⼀篇来谈谈为何“char”类型的取值范围是【-128,127】,⽽“unsigned char”取值范围是【0,255】。
a的ascii的编码是多少欢迎留⾔讨论技术。
本⽂为作者原创,欢迎转发!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论