2009-03-30

Unsigned vs. Signed

在定義整數變數的型態的時候可以加上 unsigned 或是 signed, 例如
unsigned char
unsigned short (int)
unsigned long (int)
unsigned int
----------
signed char
signed short (int)
signed long (int)
signed int
--------------
上面 signed 有加和沒有加是一樣的意義
加上 unsigned 以後,
1. 所需要的資料儲存空間和沒有加 unsigned 時是一樣的
2. 在使用 printf() 列印時基本上你必須分清楚
unsigned 有影響到的是參數的傳遞, 使用 %d 或是
%u 基本上是看程式設計者自己的選擇
int i=-1;
printf("%d %u\n", i, i);
會印出
-1 4294967295
unsigned int i=-1;
printf("%d %u\n", i, i);
也會印出
-1 4294967295
char i=-1;
printf("%d %u\n", i, i);
還是會印出
-1 4294967295
但是
unsigned char i=-1;
printf("%d %u\n", i, i);
則會印出
255 255
這不是 %d 和 %u 的問題, 而是
參數傳遞時資料轉換的問題 (見下面第 3 項)
 blog it

沒有留言: