char 與 unsigned char 的區別
單看兩個變數類型是沒有差別的, char -128 ~ 127, unsigned char 0 ~ 255,範圍大小一樣,並沒差別。唯一差別是在賦值的時候。賦值的時候 char 與 unsigned char 的區別
(signed) char 有符號 bit ,這會導致你在賦予值時,(signed) char 會依照情況去賦予值。 void unsignedcharTest(unsigned char value)
{
char c = value;
unsigned char uc = value;
int char_to_int = c;
int unchar_to_int = uc;
unsigned int char_to_unint = c;
unsigned int unchar_to_unint = uc;
printf("%%c: %c, %c\n", c, uc);
printf("%%X: %X, %X\n", c, uc);
printf("%%d: %d, %d\n", char_to_int, unchar_to_int);
printf("%%u: %u, %u\n", char_to_unint, unchar_to_unint);
}
int main()
{
unsignedcharTest(0x7F); // 0111 1111 符號 bit 為 0 不會擴展
unsignedcharTest(0x80); // 1000 0000 符號 bit 為 1 會擴展,補 1
return 0;
}
結果 :
%c: ,
%X: 7F, 7F
%d: 127, 127
%u: 127, 127
%c: ,
%X: FFFFFF80, 80
%d: -128, 128
%u: 4294967168, 128
參考資料 :
https://www.itread01.com/content/1547130625.html
0 意見:
張貼留言