今天在openwrt 上面遇到unsigned char 來(lái)定義變量共虑, unsigned表示的是無(wú)符號(hào)灾而,對(duì)于char類(lèi)型來(lái)說(shuō) char 只有一個(gè)字節(jié)類(lèi)型旨剥,這個(gè)字節(jié)中取最高位以充當(dāng)符號(hào)位暴凑,剩余7位用來(lái)表示數(shù)值完域。而unsigned char 整個(gè)字節(jié)全部用來(lái)表示數(shù)值。所以好唯,很顯然一個(gè)字節(jié)的char類(lèi)型表示數(shù)值范圍是-128~127竭沫,unsigned char 表示的數(shù)值范圍是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