C語言基本資料型別整型int用法詳解

2021-03-04 02:00:27 字數 4583 閱讀 7706

c語言基本資料型別:整型(int)用法詳解

1. 整型int

c 語言提供了很多整數型別(整型),這些整型的區別在於它們的取值範圍的大小,以及是否可以為負。int是整型之一,一般被稱為整型。以後,在不產生歧義的情況下,我們把整數型別和int都稱為整型。

int代表有符號整數,也就是說,用int宣告的變數可以是正數,可以是負數,也可以是零,但是只能是整數。標準規定int的最小取值範圍是 -32767 到 32767。int的取值範圍因機器而異,但是一定要大於或者等於 -32767 到 32767。

一般來說,int占用乙個字的記憶體空間。因此,字長為 16 位(bit)的舊式 ibm 相容機使用 16 位來儲存整型int,取值範圍是

-32768 到 32767 。目前的個人電腦一般都是 32 位字長的,這些電腦中,int一般也是 32 位的,取值範圍是 -2147483648 到 2147483647。對於使用 64 位 cpu 的電腦,使用更多位儲存int也是很自然的事情,取值範圍當然也會更大。

2. 宣告int型別的變數

正如我們在以前的教程裡看到的那樣,int用於宣告整型變數:以int打頭,後面跟著變數的名字,最後以分號(;)結束。例如:

interns; /* 宣告乙個變數 */

/* 注意:一定要用逗號(,),不能用分號(;)*/

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的取值範圍,那麼編譯器將會把這個整數常量當作 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 ", year, 9, 20 + 9 ); /* 20 + 9 是加法表示式 */

保證格式限定符的數目和引數數目一致是我們的責任,編譯器不負責捕捉這種錯誤!例如:

#include

int main(void)

這個程式可以通過編譯,但是執行結果將會出乎意料,因為我們少寫了兩個引數。標準規定,如果格式限定符的數目大於引數數目,則printf函式的行為是未定義的;如果引數數目大於格式限定符的數目,則多餘的引數會被忽略。

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

int main(void)

這個程式的輸出是:

dec = 200; octal = 310; hex = c8; hex = c8

dec = 200; octal = 0310; hex = 0xc8; hex = 0xc8

1. 其它整數型別

int是 c 語言的基本整數型別,可以滿足我們處理一般資料的需求。c 語言還提供了四個可以修飾int的關鍵字:short、long、signed,以及 unsigned。

利用這四個關鍵字,c 語言標準定義了以下整數型別:

1) short int(可簡寫為 short),和int一樣,也是有符號整數

2) long int(簡寫:long),有符號整數

3) long longint(簡寫:long long),c99 標準新增的型別,

有符號整數

4) unsigned int(簡寫:unsigned),無符號整數,不能表示負數

5) unsigned long int(簡寫:unsigned long),無符號整數,

不能表示負數

6) unsigned short int(簡寫:unsigned short),無符號整數,

不能表示負數

7) unsigned long longint(簡寫:unsigned long long),

c99 新增的型別,無符號整數

8) 所有沒有標明 unsigned 的整數型別預設都是有符號整數。

在這些整數型別前面加上 signed 可以使讀者更清楚地知道

這些是有符號整數,儘管有沒有 signed 都表示有符號整數。

例如:signed int等同於int。

一般我們把 short 稱為短整型,把 long 稱為長整型,把 long long稱為超長整型,把int稱為整型。unsigned 打頭的那些整數型別統稱為無符號整型。例如:

我們稱 unsigned short 為無符號短整型。以此類推。

2. 宣告方式

這些整數型別的宣告方式與int型別的宣告方式一樣。例如:

longintestine;

long johns;

shortinterns;

short ribs;

unsignedints_count;

unsigned players;

unsigned long headcount;

unsigned short yesvotes;

long longago; /* c99 特有 */

unsigned long long ego; /* c99 特有 */

如果您的編譯器不支援 c99 標準,那就不能使用 long long和 unsigned long long。

3. 取值範圍(表示範圍)

標準也規定了這些整數型別的最小取值範圍。short 的最小表示範圍和int一樣,都是

-32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。

類似地,2 的 20 次方記作 2^20 ,以此類推。注意:c 語言中 2^15 並不表示 2 的 15 次方,為了書寫方便,我們姑且這麼表示。

long 的最小取值範圍是 -2147483647 到 2147483647 。也就是 -(2^31 - 1) 到 (2^31 - 1) 。unsigned short的最小表示範圍和unsigned int一樣,都是 0 到 65535(2^16 - 1)。

unsigned long 的最小取值範圍是 0 到 4294967295(2^32 - 1)。long long的最小取值範圍是 -9223372036854775807(-(2^63 - 1))到 9223372036854775807(2^63 - 1);unsigned long long是 0 到 18446744073709551615(2^64 - 1)。

標準規定,int的表示範圍不能小於 short 的表示範圍,long 的表示範圍不能小於int的表示範圍。這就是說 short 型變數占用的空間可能比int型變數少,而 long 型變數占用的空間可能比int型變數多。16 位(bit)的計算機中,int和 short 一般都是 16 位,而 long 是 32位;32位的計算機中,short一般是 16 位,而long和int是 32位。

tc2(16位的編譯器)中,int是16位的;而dev-c++(32 位的編譯器)中,int是 32 位的。

Oracle基本資料型別

資料型別 char n 描述定長字串,n位元組長,如果不指 n 1 to 節定長度,預設為1個位元組長 乙個 漢字為2位元組 可變長的字串,具體定義時指明最大長度n,這種資料型別可以放數字 字母以及ascii碼字符集 或者ebcdic等資料庫系統接受的字符集標準 中的所有符號。n 1 to 節如果資...

2C語言基本資料型別與常量變數

任課老師 李新宇教學時間 2012.9.3 課時 3課時班級 1001 1101 姓名 學習目標 知識與技能 1 掌握c語言的基本資料型別與表示範圍,區別學習無符號整數和有符號整數,並能正確選擇不同的資料型別表示資料。2 掌握常量和變數的概念。3 區別學習十進位制,八進位制,十六進製制的整型常量 能...

Bullet中的基本資料型別

bullet中的常用資料型別包括 btscalar btvector3 btquaternion btmatrix3x3以及bttransform。下面我們看看這些基本資料型別功能及用法 1 btscalar 在bullet中,btscalar是單精度或雙精度浮點數。如果我們定義了巨集bt use ...