• char的本质


    我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与shortintlong 这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把这个类型叫做“byte”,然后现在就可以根据实际情况,使用byte short 来把char 通过typedef 定义出来,这样更合适些)于是,使用”%d”或者”%x”打印一个字符,便能得出它的10 进制或16 进制的ASCII 码值;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII字符。以下程序段把所有可见字符的ASCII 码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16 进制数增加”0X”前缀):

    for(int i = 32; i < 127; i++)

    {

    printf("[ %c ]: %3d 0x%#04X\n", i, i, i);

    }

    把占用字节小的类型赋给占用字节大的类型时,会有符号位扩展问题,比如把char赋给int时,应当区别是1扩展还是0扩展。

    示例1.1

    void f(unsigned char v)

    {

        char c = v;

        unsigned char uc = v;

        unsigned int uia = c, uib = uc;

        int i1 = c, i2 = uc;

        printf("----------------\n");

        printf("%%c: %c, %c\n", c, uc);

        printf("%%X: %X, %X\n", c, uc);

        printf("%%u: %u, %u\n", uia, uib);

        printf("%%d: %d, %d\n", i1, i2);

    }

        f(0x80);

        f(0x7F);

    output:

    %c: €,

    %X: FFFFFF80

    %u: 42949671

    %d: -128, 12

    ------------

    %c: , 

    %X: 7F, 7F

    %u: 127, 127

    %d: 127, 127

    原文:

    http://baike.baidu.com/view/1295144.htm

    http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html

  • 相关阅读:
    shell学习(11)- seq
    bash快捷键光标移动到行首行尾等
    shell学习(10)- if的使用
    Python 执行 Shell 命令
    查看 jar 包加载顺序
    Linux 中的 sudoers
    Ubuntu 开机启动程序
    指定 Docker 和 K8S 的命令以及用户
    Spark on K8S(Standalone)
    Spark on K8S (Kubernetes Native)
  • 原文地址:https://www.cnblogs.com/mydomain/p/2772469.html
Copyright © 2020-2023  润新知