char与unsigned char的区别

2018-06-09  本文已影响0人  only_cherry

今天在openwrt 上面遇到unsigned char 来定义变量, unsigned表示的是无符号,对于char类型来说 char 只有一个字节类型,这个字节中取最高位以充当符号位,剩余7位用来表示数值。而unsigned char 整个字节全部用来表示数值。所以,很显然一个字节的char类型表示数值范围是-128~127,unsigned char 表示的数值范围是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("----------------\n");  
  
    printf("%%c: %c, %c\n", c, uc);  
  
    printf("%%X: %X, %X\n", c, uc);  
  
    printf("%%u: %u, %u\n", a, b);  
  
    printf("%%d: %d, %d\n", i, j);  
  
} 

int main(int argc, char *argv[])  
  
{  
  
    f(0x80);  
  
    f(0x7F);  
  
    return 0;  
  
} 
图片.png
上一篇 下一篇

猜你喜欢

热点阅读