zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    String painter HDU
    GCD Counting-树形DP
    XOR UVALive
    BZOJ-9-3295: [Cqoi2011]动态逆序对
    E
    Stars HDU
    二维单调队列(理想的正方形+修筑绿化带)
    P3622 [APIO2007]动物园
    COJ1160[一本通 5.3 例 1」Amount of Degrees
    [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/mydomain/p/2772469.html
Copyright © 2011-2022 走看看