C語言中的資料型別

2022-06-05 17:06:05 字數 2952 閱讀 9999

儲存方式:

編譯系統給int型資料分配2個位元組或者4個位元組

在儲存單元中的儲存方式是使用整數的補碼形式存放。

正數的補碼是是此數的二進位制形式

負數的補碼是負數的絕對值的二進位制形式按位取反再加1

在存放整數的儲存單元中,最左邊一位是用來表示符號的,該位為0表示正數,該位為1表示負數。

表示範圍:

如果給整型變數分配2個位元組,則儲存單元中能夠存放的最大正數為0111111111111111,即

\[2^-1=32767

\]能存放的最小負數為1000000000000000,即

\[-2^=-32768

\]如果給整型變數分配4個位元組,則儲存單元中能夠存放的最大正數為:

\[2^-1=2147183647

\]能存放的最小負數為1000000000000000,即

\[-2^=-2147483648

\]超過以上範圍,則表現為資料的溢位。

在visual c++中,編譯系統分配給int型別4個位元組,分配給短整型2個位元組,資料儲存方式與int型別相同,數值範圍為:

\[-32767 \leftrightarrow 32768

\]在visual c++中,編譯系統分配給long int型別4個位元組,32位,數值範圍為:

\[-2147483648 \leftrightarrow 2147483647

\]編譯系統一般分配給long long int型別8個位元組,為c99新增型別,許多編譯系統尚未實現。

c語言並沒有具體規定各種型別資料所占用的儲存單元的長度,而是由各個編譯系統自己決定的,c語言只要求long型資料長度不短於int型別,short型別不長於int型別。不同編譯系統中對於不同的整型資料型別的長度規定不同,故將乙個程式從a編譯系統搬移到b編譯系統時,要注意不同編譯系統對資料型別長度的規定,防止資料的溢位情況。

上面介紹的四種整型資料型別的變數值都是以補碼的形式進行儲存的,儲存單元的第乙個二進位制符號表示符號,不同的整型資料型別有不同的負數到正數的範圍,以visual c++為例,整型資料常見的儲存空間喝值的資料範圍為下:

型別位元組數

取值範圍

[signed] int

4-2147483648~2147483647

unsigned int

40~4294967295

[signed] short [int]

2-32768~32767

unsigned short [int]

20~65535

[signed] long [int]

4-2147483648~2147483647

unsigned long [int]

40~4294967295

[signed] long long [int]

8-9223372036845775808~9223372036854775807

unsigned long long [int]

80~18446744073709551615

"[ ]"內的內容是可選的,

在實際應用中,如果變數儲存的值只有正數,為了充分利用變數的值的範圍,可以將變數定義為無符號資料型別,

其中**的最後兩行中的[signed] long long [int]和unsigned long long [int]為c99新增,

有符號資料型別中儲存單元的最高為表示數值的符號(0為正,1為負),

如果指定資料型別為無符號(unsigned)型別,則儲存單元的全部二進位制都用來存放資料,不能用來儲存負數,

無符號整型變數中存放的正數的範圍比一般整型變數中正數的範圍擴大了一倍。

只有整型資料和字元型資料可以加上signed和unsigned修飾符,不能給無符號資料型別賦負值。

無符號十進位制數的輸出用%u作佔位符

各種字符集的基本集包括127個字元,可以用7個二進位制位表示,c語言中指定用乙個位元組8位來儲存乙個字元,其中位元組的第一位為0,

『a』的ascii碼為65,『a』的ascii碼為97,相隔32,『1』的ascii碼為49,字元『1』和整數1是不同的概念,

字元變數用char定義,字元變數實質上是乙個字位元組的整型變數,也可以將0~127之間的乙個整數賦給乙個字元變數

char c='?' ;

c是字元變數,實質上是乙個位元組的整型變數,可以用%d和%c進行輸出,用%d輸出,輸出的是?對應的ascii碼63,用%c輸出,輸出的是字元'?'

字元型別也屬於整型,也可以用signed和unsigned進行修飾

將char型別改為unsigned char把可用的字元由127個拓展到255個,但是不同的系統有不同的拓展字符集。

浮點型資料用來表示具有小數點的實數,包括單精度浮點型float ,雙精度浮點型double ,長雙精度浮點型long double,

c語言中,實數以指數的形式存放在儲存單元中

系統為float型別分配4個位元組,數值以規範化的二進位制指數形式存放在儲存單元中,系統將實型資料儲存為小數部分和指數部分分別存放。

如3.14159的儲存方式為:

數值符號

小數部分(此處實際為二進位制)

指數部分

+.314159

1(表示10^1)

具體在4個位元組32位中,具體以多少位表示小數部分,以多少位表示指數部分,c語言標準並未具體規定,各個編譯系統標準不同,

小數部分占用的位數越多,則數的有效數字越多,儲存的精度也就越高,

指數部分占用的位數越多,則能表示的數值範圍也就越大。

雙精度浮點型使用8個位元組儲存乙個double型資料,擴大了能表示的數值範圍,可以得到15位有效數字,數值範圍為:

\[-1.7*10^\leftrightarrow 1.7*10^

\]在c語言進行浮點數的算數運算時,將float型資料自動轉換為double型,再進行運算。

visual c++對double型和 long double型都分配8個位元組,不同編譯系統對long double型資料處理方式不同。

C 語言中的資料型別

1.1基本資料型別 字元型 char 短整型 short int 整型 int 長整型 long int 單精度浮點型 float 雙精度浮點型 double 1.2復合資料型別 陣列,結構體。字元型 char a 1 1個位元組 短整型 short int 2個位元組 整型 int 4個位元組 長...

C語言中的資料型別

常量,表示一些固定的資料 1 整型常量 int 包括了所有的整數,比如6 27 109 256 10 0 289等 2 浮點型常量 float double 浮點型常量分為double和float兩種資料型別 u double 雙精度浮點型,其實就是小數。比如5.43 2.3 0.0等 注意,0.0...

c語言中的資料型別

c語言中資料型別可分為基本型別,結構體型別,指標型別和空型別 1資料型別 1基本型別 1.1字元型 本質上也是一種整型變數 char 1位元組 128 127 unsigned char 1位元組 0 255 由於字元是按其 整數 形式儲存的,因此c99把字元型資料作為整型的一種。1.1.1字元與字...