• char 与 signed char 和 unsigned char三者之间的关系


    char 与 signed char 和 unsigned char三者之间的关系


    1. 三者都占用 1个字节,即 8 bit
    2. signed char取值范围(-128, 127)
    3. unsigned char取值范围(0, 255)
    4. 三个内存中存储的都是一样的东东,只是在运算时进行解析的方式不同
    5. 其如何解析和编译器有关。不同的编译器对char的解析不同,如将其定义为signed char的有:
    • VC编译器
    • x86上的GCC
      将其定义为unsigned char的有:arm-linux-gcc
    1. char可以当字符用,原始ASCII标准里定义的字符码值只有0~127,所以两种定义都装的下。
    2. char可以当单字节整数用,ASCII标准里的字符串都本质上是一个整数。
    3. unsigned char的高位扩展,以为没有最高的符号位,所以8位_bit_都作为了数值位,因此能表示(0~255)。但在屏幕上显示时可能会不同。

    **测试代码: **

    #include <stdio.h>
    void f(unsigned char v)
    {  
        char c = v;  
        unsigned char uc = v;  
        unsigned int a = c, b = uc;  
        int i = c, j = uc;  
        printf("----------------
    ");  
        printf("%%c: %c, %c
    ", c, uc);  
        printf("%%X: %X, %X
    ", c, uc);  
        printf("%%u: %u, %u
    ", a, b);  
        printf("%%d: %d, %d
    ", i, j);  
    }  
    int main(int argc, char *argv[])  
    {  
        f(0x80);  
        f(0x7F);   
        return 0;  
    } 
    

    输出:

    %c: ?, ?
    %X: FFFFFF80, 80
    %u: 4294967168, 128
    %d: -128, 128
    ----------------
    %c: , 
    %X: 7F, 7F
    %u: 127, 127
    %d: 127, 127 
    

    http://blog.csdn.net/zx824/article/details/6884352

  • 相关阅读:
    常见限流算法
    spring aop 事物
    Java序列化和反序列化为什么要实现Serializable接口
    java类在何时被加载?
    mysql 排序 是怎么工作的?
    程序员转正述职报告
    .NET中使用Channel<T>
    .NET-服务承载系统(Hosting)(支持Cron表达式)
    JObject拼接Json字符串
    NET5 使用FTP发布
  • 原文地址:https://www.cnblogs.com/lomper/p/4266775.html
Copyright © 2020-2023  润新知