1. 整型 int C 語言提供了很多整數類型(整型),這些整型的區別在於它們的取值範圍的大小,以及是否可以為負。int 是整型之一,一般被稱為整型。 int 代表有符號整數,也就是說,用 int 聲明的變數可以是正數,可以是負數,也可以是零,但是只能是整數。標準規定 int 的最小取值範圍是 -32767 到 32767。int 的取值範圍因機器而異,但是一定要大於或者等於-32767到 32767。一般來說,int 佔用一個字的記憶體空間。因此,字長為 16 位的舊式 IBM 相容機使用 16 位來儲存整型 int ,取值範圍是 -32768 到 32767 。目前的個人電腦一般都是 32 位字長的,這些電腦中,int一般也是32位的,取值範圍是 -2147483648到 2147483647 。對於使用 64 位元 CPU 的電腦,使用更多位元組儲存 int 也是很自然的事情,取值範圍當然也會更大。 2. 聲明 int 類型的變數 正如我們在以前的教程裡看到的那樣,int 用於聲明整型變數:以 int 打頭,後面跟著變數的名字,最後以分號(;)結束。例如: int erns; /* 聲明一個變數 */ /* 注意:一定要用逗號(,),不能用分號(;)*/ int hogs, cows, goats; /* 聲明三個變數 */ 以上聲明建立了變數,但是沒有給它們提供“值(value)”。在前面的教程中,我們已經用了兩種方法使變數獲得“值”。一種是賦值:cows = 500; 。另一種是使用 scanf 函數:scanf( "%d", &goats ); 。下面我們來學習第三種方法。 3. 初始設定變數 初始設定變數是指給變數賦初值:聲明變數的時候,在變數名的後面寫上等號(=),然後寫下你希望賦予變數的“值”。例如: int hogs = 21; int cows = 32, goats = 14; int dogs, cats = 94; 以上聲明建立了變數,並且為這些變數分配了空間,同時也賦了初值。注意,第三行中只有 cats 被初始化為 94,而 dogs 沒有被初始化!如: 4. int 常量 上面的例子中,21、32、14,以及 94 都是整數常量。C 語言中,整數常量的預設類型是 int ,也就是說,整數常量佔用記憶體空間的大小一般等於 int 類型的變數佔用空間的大小。如果整數常量的大小超過了 int 的取值範圍,那麼編譯器將會把這個整數常量當作 long int 類型來處理,這個我們後面還會講到。 21、32、14 和 94 都在 int 的取值範圍之內,因此它們都是 int 常量。 5. 輸出 int 型資料 我們可以用 printf 函數來輸出 int 型資料。正如我們在前面的教程中看到的那樣,預留位置 %d 代表輸出的是 int 型資料,它告訴 printf 函數在什麼地方輸出相應的 int 型資料。%d 也被稱為格式限定符(format specifier),因為它指定了 printf 函數應該使用什麼形式來輸出資料。printf 函數的第一個參數只能是字串,這個字串被稱為格式串(format string)。格式串中有多少個 %d,我們就應該相應地提供多少個 int 型參數給 printf 函數。int 型參數可以是 int 型變數,int 型常量,以及結果為 int 型的運算式等。例如: int year = 2005; /* year 是 int 型變數 */ printf( "Today is %d-%d-%d\n", year, 9, 20 + 9 ); /* 20 + 9 是加法運算式 */ 保證格式限定符的數目和參數數目一致是我們的責任,編譯器不負責捕捉這種錯誤!例如: #include <stdio.h> int main(void) { int ten = 10, two = 2; printf("%d minus %d is %d\n", ten ); /* 少寫了兩個參數 */ getchar(); /* 等待使用者按斷行符號 */ return 0; } 這個程式可以通過編譯,但是運行結果將會出乎意料,因為我們少寫了兩個參數。第一個 %d 被參數 ten 的值代替,而另外兩個 %d 將被記憶體中本來儲存著的值代替。因為記憶體中本來儲存著的值是不確定的,所以輸出結果是不確定的。 6. 八進位(octal)和十六進位(hexadecimal) C 語言中,整數常量預設是十進位(decimal)整數。通過在整數常量前面加上特定的首碼,可以把它設定為八進位或者十六進位整數。首碼 0x 或者 0X 把整數常量設定為十六進位整數。注意,是數字 0 ,而不是字母 O ,別搞錯了哦!例如:十進位的 16 用十六進位來表示是 0x10 或者 0X10 。在整數常量前面加上首碼 0 ,表示它是八進位整數。注意,是數字 0 ,而不是字母 O 。例如:十進位的 16 表示為八進位就是 020 。 7. 以八進位或者十六進位形式輸出資料 使用格式限定符 %o 可以以八進位的形式輸出整數。注意,是小寫字母 o ,不是數字 0 。使用 %x 或者 %X 可以以十六進位的形式輸出整數。小寫 x 表示輸出使用小寫字母,大寫 X 表示輸出使用大寫字母。使用 %#o,%#x 或者 %#X,得到的輸出將包括首碼 0,0x 或者 0X。例如: #include <stdio.h> int main(void) { int x = 200; printf("dec = %d; octal = %o; hex = %x; HEX = %X\n", x, x, x, x); printf("dec = %d; octal = %#o; hex = %#x; HEX = %#X\n", x, x, x, x); getchar(); return 0; } 這個程式的輸出是: dec = 200; octal = 310; hex = c8; HEX = C8 dec = 200; octal = 0310; hex = 0xc8; HEX = 0XC8 |