美文网首页
C语言字符型数据的ASCII码值为何输出是负数?

C语言字符型数据的ASCII码值为何输出是负数?

作者: 胖一一 | 来源:发表于2019-02-26 21:40 被阅读0次

    有如下一段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吧。实际运行结果如下:


    image.png

    范围,超过的部分是200 – 127 = 73。那么超过的部分又从-128开始计数了,也就是-128 + 73 - 1 = -56了。

    如果在定义字符a时,类型写成“unsigned char”,那么旧标明字符a的10进制ASCII码值是无符号的,取值范围就是【0,255】了。朋友们可以修改下程序看看结果是什么。

    下一篇来谈谈为何“char”类型的取值范围是【-128,127】,而“unsigned char”取值范围是【0,255】。

    欢迎留言讨论技术。

    相关文章

      网友评论

          本文标题:C语言字符型数据的ASCII码值为何输出是负数?

          本文链接:https://www.haomeiwen.com/subject/yqttuqtx.html