一 什麼是資料型別?
資料型別在
資料結構
中的定義是
乙個值的集合以及定義在這個值集上的一組操作。
這個概念看得我暈暈的,根據我的理解,這裡的
值是指記憶體中的一塊大小,值的集合就是由一類固定大小的記憶體塊構成的集合。
(注:對於剛入門的人來說,可能對於記憶體這個概念不是很理解。簡單點來說,記憶體就是一塊儲存區域,而我們所寫的程式最終是要在這塊區域中執行的,程式執行產生的動作無非就是對資料的儲存和操作。這裡我們需要了解的是:記憶體的儲存單元都是有相應位址的(編碼位址),通常叫做「編址」。「編址」儲存對於我們理解資料及其操作有很大幫助,特別是後面指標這一塊,如果能從記憶體方面來理解,指標的知識就不覺得難了!對於剛入門的人來說,以後學習了編譯原理和作業系統可能就會深有體會了!)
二 c語言的基本資料型別
c語言的基本資料型別有:
short int long char float double
六種基本資料型別。
三 變數
變數就是用來儲存值
的,變數可以通過變數名訪問。在
c語言中,變數是可變的。
變數的命名
:數字、字母、下劃線
,都可以為變數命名。
做為變數名的開頭不能為數字,
如 3a_
是錯的,而
a_3或
_a3是正確變數名不能為關鍵字,像
ifelse
printf 等等都不能。
四 記憶體分配的大小
不同系統對於資料型別的記憶體的分配大小不一樣,這裡以32
位系統為例,
short
型別分配的
記憶體大小是2 個byte;
int
型別分配
的記憶體大小是4 個byte;
long
型別分配的
記憶體大小是4 個byte;
float
型別分配的
記憶體大小是4 個byte;
double
型別分配
的記憶體大小是8 個byte;
char
型別分配的
記憶體大小是1 個byte。
(注意這裡指一般情況,可能不同的平台還會有所不同,具體平台可以用sizeof 關鍵字測試一下)
五 整數溢位
如果整數太大,超出整數型別的範圍它將溢位到起始點。
六 c語言資料型別列印對應的佔位符
char %c
unsigned char %c
short %hd
unsigned short %hu
long %ld
unsigned long %lu
int %d
unsigned int %u
float %f和
%gdouble %lf和
%lg%f和
%lf保留小數點後無效的0,
%g和%lg不保留
小數點後無效的0
%nd也可以作為佔位符列印整數數字,n是
乙個整數。列印結果一定佔n
個位置,
空位置補充空格字元
%-nd列印結果也佔
n個位置,空位置出現在
右邊%0nd列印結果也佔
n個位置,空位置用字元
『0』填充
%n.mf可以用來列印浮點數,列印結果中整個
數字佔n
個位置,小數點後面佔
m個位置
七 c 語言常用轉義字元表
轉義字元 含義 ascii 碼(
16/10
進製)
\o 空字元(null) 00h/0
\n 換行符(lf) 0ah/10
\r 回車符(cr) 0dh/13
\t 水平製表符(ht) 09h/9
\v 垂直製表(vt) 0b/11
\a 響鈴(bel) 07/7
\b 退格符(bs) 08h/8
\f 換頁符(ff) 0ch/12
\』 單引號 27h/39
\」 雙引號 22h/34
\\ 反斜槓 5ch/92
\? 問號字元 3f/63
\ddd 任意字元 三位八進位制
\xhh 任意字元 二位十六進製制
字元常量中使用單引號和反斜槓以及字元常量中使用雙引號和反斜槓時,都
必須使用轉義字元表示,即在這些字元前加上反斜槓。
在 c
程式中使用轉義字元
\ d d d
或者\ x h h
可以方便靈活地表示任意字元。
\ d d d 為斜槓後面跟三位八進位制數,該三位八進位制數的值即為對應的八進位制
a s c i i
碼值。\ x
後面跟兩位十六進製制數,該兩位十六進製制數為對應字元的十六進製制
a s c i i
碼值。
使用轉義字元時需要注意以下問題:
1) 轉義字元中只能使用小寫字母,每個轉義字元只能看作乙個字元。
2) \v 垂直製表和
\f 換頁符對螢幕沒有任何影響,但會影響印表機執行響應操
作。3) 在
c 程式中,使用不可列印字元時,通常用轉義字元表示
注:1)轉義字元中只能使用小寫字母,每個轉義字元只能看作
乙個字元。
2)\v垂直製表和\f換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。
3)在c程式中,使用不可列印字元時,通常用轉義字元表示。
4)轉義字元』\0』表示空字元null,它的值是0。而字元'0'的ascii碼值是48。因此,空字元』\0』不是字元0。另外,空字元不等於空格字元,空格字元的ascii碼值為32而不是0。程式設計序時,讀者應當區別清楚。
5) 如果反斜線之後的字元和它不構成轉義字元,則』\』不起轉義作用將被忽略。
例如:printf(「a\nbc\ndef\n」);
輸出:anbc
def6)轉義字元也可以出現在字串中,但只作為乙個字元看待。
例 求下面字串的長度
「\026[12,m」 長度為6
「\0mn」 長度為0。(想想:為什麼不是2)
八 八進位制和十六進製制
字首0x或者0x表示使用十六進製制值;字首0(零)表示使用八進位制。
要用八進位制而不是十進位制顯示整數,用%o(不是零)代替%d。要顯示十六進製制整數,使用%x或%x。如果想顯示c語言字首,可以使用說明符%#o %#x和%#x分別生成0 0x 和0x字首。
2016/4/26晚 記
C 資料型別
一般來說,計算機要儲存和處理不同的資料型別,在c 中有基本的資料型別和使用者自定義資料型別以及引用型資料。我們先學習下基本的資料型別,也就是系統自帶的資料型別。每種資料型別都要佔據系統記憶體的一定空間,例如c 中的整數int 乙個整數佔4個位元組,也就是32位 計算機是用0和1二進位制來表示和處理資...
c 資料型別
型別可分為 值型別,引用型別 值型別 直接存放真正的資料,值型別都有固定的長度,值型別的變數都儲存在 堆疊 stack 上。作為值型別的變數,每個都有自己的資料,因此對乙個變數的操作不會影響其他變數。引用型別 儲存讀資料的記憶體位址的引用,位於受管制的堆 heap 上作為引用型別的變數可以引 用同一...
C 資料型別
bool system.boolean 1位元組 byte system.byte 1位元組無符號 sbyte system.sbyte 1位元組有符號 short system.int16 2位元組 ushort system.uint16 2位元組 int system.int32 4位元組 u...