一,整型
1,int型別
a:int變數:
int變數是有符號整數,占用乙個字的大小。但是ansi規定int型別最少占用16位 即-2^15~2^15-1
(注:計算機中乙個字表示最自然的儲存單位)
2種宣告的方法: int x; //單獨宣告
int x, y, z; //多個變數一起宣告
3種為變數賦值的方法:x = 12; //直接賦值
scanf("%d", &x); //用scanf()賦值
int x = 12; //初始化的時候賦值
b,int常量
c把不含小數點和指數的常數當做int常量來儲存
c,八進位制和十六進製制的int常量
在c語言中預設的數字為十進位制。如果在乙個數字前面加上字首0(零),就可以表示為八進位制了
如果在乙個數字前面加上字首0x或者0x,就可以表示為十六進製制
(注意:不論是十進位制還是八進位制還是十六進製制表示法,最終被轉換成的機器語言的值都是一樣的)
d,用printf()列印八進位制和十六進製制數字
%o-----以八進位制形式列印
%x-----以十六進製制形式列印
%#o----以帶字首0的方式列印八進位制數
%#x----以帶字首0x的方式列印十六進製制數
%#x----以帶字首0x的方式列印十六進製制數
(注意:這些說明符可以列印任意基本資料型別,不論是long還是unsigned long型別等)
e,整數溢位(省略)
2, 其它資料型別
a,變數(加上short、long、unsigned關鍵字)
short int(簡寫為short)
long int(簡寫為long)
long long int(簡寫為long long)
unsigned int(簡寫為unsigned)
unsigned long int(簡寫為unsigned long)
unsigned short int(簡寫為unsigned short)
unsigned long long int(簡寫為unsigned long long)
(注意:關鍵字signed表示有符號型別,加上去之後使資料型別更加明確,一般可以省略
占用位元組大小的排列順序為 short <= int <= long,c標準保證short至少為16位,int至少為16位,long至少為32位
大多數情況下,long long型別為64位,long型別為32為,int型別為16位或32位)
b,常量
不論是十進位制、八進位制還是十六進製制的常量,根據數字大小,以int、long、unsigned long、long long、unsigned long long的順序依次適應儲存
如果要將較小的常量儲存在較大的資料型別中,可以加字尾。字尾l或l、ll、u或u、ul等
c,用printf()列印short、long、long long 和 unsigned型別數
%hd-----short %ld-----long %lld----long long %u------unsigned %lu------unsigned long %llu-----unsigned long long (注意l和u的順序)
3,字元char型別
a,乙個char型別變數所占用的位元組與平台相適應,c保證char型別所佔記憶體足夠大,以儲存其所在系統上的基本字符集
(注:c語言中的乙個位元組定義為乙個char變數所占用的位數)
b,大多數情況下占用8個位元組,取值範圍為-127到128。可以在前面加上unsigned使其取值範圍為0-255以便表示擴充套件的ascii碼
c,2種宣告方法:char x; //單獨宣告乙個變數
char x, y, z; //同時宣告多個變數
d,4種賦值方法:char x = 'a'; //直接用字元賦值
char x = 65; //用ascii碼賦值
char x = '\007'; //八進位制形式。格式為\0oo 可以省略前面的零
char x = '\x7'; //十六進製制形式。格式為\xhhh或\xhhh
(注意:65本來應該是乙個常量,而這個常量應該被存為int型別,因此當被賦值的時候,只讀取最後乙個位元組的內容
八進位制和十六進製制形式的轉義字元形式還可以用於字串中)
e,轉義字元序列
\a----------報警 \b----------退格 \f----------走紙 \n----------換行
\r----------回車 \t----------水平製表符\v----------垂直製表符
\\------反斜槓(\) \『---------單引號(') \"----------雙引號("")
\?----------問號(?) \0ooo-------八進位制值(o表示乙個八進位制數字)
\xhhh----------十六進製制值(h表示乙個十六進製制數字)
二,浮點型
1,float、double和long double型別
a,float型別:
有效數字至少6位
取值範圍至少為10的-37次方到10的37次方
儲存方式:以二進位制的指數形式用32位儲存乙個浮點數,其中8位用於表示指數及其符號,24位用於表示尾數
b,double型別:
有效數字至少10位
取值範圍同float,至少為10的-37次方到10的37次方
儲存方式:以二進位制的指數形式用64位儲存乙個雙精度數,指數和尾數的位數隨系統不同而不同
2,宣告方法同上
3,浮點常量
浮點常量是指乙個常量數字中至少存在乙個小數點或者指數部分(區別於int常量)
預設情況下編譯器將浮點常量視為double型別,佔8個位元組,以便使常量之間的計算更加精確。
如果要更改為float型別,可以在後面加上f或f,如果要更改為long double型別,可以在後面加上l或l
還可以用十六進製制來表示浮點常量,那麼就需要在前面加上0x或0x接著就是十六進製制數字,但是指數p或p,表示是2的指數
比如:0xa.1fp10-------1010.00011111 * 2^10 = 101000011111 換成10進製就是10364
4,用printf()列印浮點數
%f-----以小數形式列印float或double型別
%e-----以指數形式列印float或double型別
%a-----以十六進製制的指數形式列印float或double型別
%lf、%le、%la-----分別以小數、指數、十六進製制指數的形式列印long double型別
5,浮點值的上溢和下溢
上溢:當計算結果是乙個達到不能在計算機裡面表達的時候,就會發生上溢。發生上溢之後,計算得到的值為inf,表示無窮大
下溢:當乙個數字的尾數和指數已經是最小了,在進行運算以時這個數字更小的時候,就會發生下溢。發生下溢的時候,會損失有效數字的精度
6,浮點數的捨入誤差
當乙個數字的精度太大的時候,將這個數字進行加減運算,由於計算機能夠表示出的有效位數有限,因此不能正確計算出結果
比如:2e20 + 1 - 2e20 在第21位加上1,計算機是做不到的 如果是2e4 + 1 - 2e4 結果是1
C語言基本資料型別
2.各種資料型別介紹 2.1整型 整形包括短整型 整形和長整形。2.1.1短整形 short a 1 2.1.2整形 一般佔4個位元組 32位 最高位代表符號,0表示正數,1表示負數,取值範圍是 2147483648 2147483647,在記憶體中的儲存順序是地位在前 高位在後,例如0x12345...
C語言基本資料型別
1.資料型別可以理解為固定記憶體大小的別名 c語言誕生之前的彙編時代,在低端的機器語言裡面沒有資料型別的概念,如何操作記憶體呢?當然我們知道記憶體的起始位址和記憶體大小,就可以操作這段記憶體了。然而在程式設計過程中,我們發現經常用到1個位元組,2個位元組和4個位元組的記憶體。我們每次呢都會去記這個2...
C語言基本資料型別
記得大學一年級上的基礎課中就有c 語言,剛開始學的時候感覺很難 雖然現在感覺也不容易 最近開始重新翻開c語言的書籍,對於其中的基本資料型別感覺很重要也別有一翻feel。c語言基本資料型別有 int,short int long int double float,char.不管是整型,浮點型以及字元型...