基本數(shù)據(jù)類型
C語言中基本數(shù)據(jù)類型包括 整型(包括字符型)运悲,浮點型,空類型项钮,指針類型班眯,構(gòu)造類型(結(jié)構(gòu)體,聯(lián)合體烁巫,數(shù)組)
頭文件 limits.h 定義一系列宏署隘,表示各個類型的最大和最小值
浮點類型分為三種:float,double程拭,long double
一般32位系統(tǒng)上 float 占四個字節(jié)定踱,double 占八個字節(jié)
相等的類型聲明:
short /signed short /short int /signed short int
unsigned short /unsigned short int
int /signed int /signed
unsigned /unsigned int
long /signed long /signed long int
unsigned long /unsigned long int
只有 char 類型 分為 signed char /char /unsigned char 三種不同的類型棍潘,char 類型不是默認為 signed char 類型
字面量
字面量是字面量常量的縮寫恃鞋,這個一個實體,指定了自身的值亦歉,并且不允許發(fā)生改變恤浪,這個特點非常重要,因為C語言允許命令常量
字面量包括整型字面量肴楷,浮點字面量水由,字符型字面量
整型字面量占用字節(jié)大小取決于字面量的后綴,后綴可以是 U赛蔫,L砂客,L 或者小寫的 u l l
添加后綴 L 表示該字面量為 long 類型,U 表示 unsigned 類型呵恢,也可以組合使用 UL(ul)表示 unsigned long
整型字面量也可以用 8 進制或者 16 進制表示鞠值,8進制以 0 開頭,16進制以 0x 開頭字符型字面量渗钉,它的類型總是 int 類型彤恶,并且不可以使用 U 和 L 的后綴
浮點類型字面量默認都是 double 類型的钞钙,后綴加上 L(l)表示它是一個 long double 類型,或者加上 F(f)表示它是一個浮點類型
聲明和定義
聲明只是通知編譯声离,此變量已經(jīng)關(guān)聯(lián)到一塊內(nèi)存上芒炼,同時此變量的變量名已經(jīng)被占用 比如 extern int i 就是一個聲明
定義是創(chuàng)建了對象并且為對象創(chuàng)建了內(nèi)存 比如 int i,定義了變量 i 术徊,并且分配了 sizeof(int) 大小的內(nèi)存
鏈接屬性和存儲類型
鏈接屬性:
當組成一個程序的各個源文件分別被編譯后本刽,所有的目標文件從那些一個或者多個函數(shù)庫中引用的函數(shù)鏈接在一起,形成可執(zhí)行文件赠涮,標志符的鏈接屬性決定如何處理不同的文件出現(xiàn)的標志符盅安,標志符的作用域和鏈接屬性相關(guān)
鏈接屬性分為三種:external,internal世囊,none
- internal 鏈接屬性的標志符在同一個文件所有聲明都指向一個實體
- external 鏈接屬性的標志符無論聲明多少次别瞭,不同的源文件聲明的都指向一個實體
下面的程序,b株憾,c蝙寨,f 的鏈接屬性是 external,其余為none
如果另一個文件也聲明了標志符 b嗤瞎,并且調(diào)用了函數(shù) c墙歪,它們實際上訪問的是這個函數(shù)的實體
其他文件要使用標志符 b 和 函數(shù) c,需要使用 extern 聲明贝奇,用以通知編譯器 標志符 b 和函數(shù) c 的存在
- 關(guān)鍵字 extern 和 static
關(guān)鍵字 extern 和 static 用于在聲明中修改標志符的鏈接屬性虹菲,如果某個聲明在正常情況下具有 external 鏈接屬性,加上 static 關(guān)鍵字可以將其鏈接屬性變?yōu)?internal 比如:
static int b;
變量 b 就會被這個源文件私有掉瞳,其他源文件如果鏈接到 b 的同名變量毕源,那么將是另一個不同的變量
函數(shù)加上 static 聲明,表示此函數(shù)為該源文件內(nèi)部私有陕习,其他源文件霎褐,其他源文件也可以定義同名函數(shù),那將是另外一個函數(shù)
static int c(int d)
常量
C語言中的常量分為整數(shù)常量该镣,浮點常量冻璃,字符常量和字符串常量;
C語言常量類型 | 說明 |
---|---|
整數(shù)常量 | 整數(shù)常量可以是十進制损合、八進制或十六進制的常量省艳,前綴指定基數(shù):0x 或 0X 表示十六進制,0 表示八進制嫁审,不帶前綴則默認表示十進制跋炕; |
浮點常量 | 浮點常量由整數(shù)部分,小數(shù)點,小數(shù)部分和指數(shù)部分組成; 當使用小數(shù)形式表示時,必須包含整數(shù)部分土居,小數(shù)部分枣购,或同時包含兩者嬉探;當使用指數(shù)形式表示時, 必須包含小數(shù)點、指數(shù)棉圈,或同時包含兩者,帶符號的指數(shù)是用 e 或 E 引入的 |
字符常量 | 字符常量可以是一個普通的字符(例如 'x')涩堤、一個轉(zhuǎn)義序列(例如 '\t'),或一個通用的字符(例如 '\u02C0') |
字符串常量 | 字符串字面值或常量是括在雙引號 " " 中的 |
轉(zhuǎn)義字符含義表:
\ \ 字符
' ' 字符
?? ?字符
" " 字符
? ? 字符
\a 警報鈴聲
\b 退格鍵
\f 換頁符
\n 換行符
\r 回車
\t 水平制表符
\v 垂直制表符
\ooo 一到三位的八進制數(shù)
\xhh . . . 一個或多個數(shù)字的十六進制數(shù)
C語言中常量的定義形式有兩種:
- 使用 #define 預(yù)處理器分瘾,
- 使用 const 關(guān)鍵字
常量類型的后綴包括 F胎围,U,L德召,使用小寫(f白魂,u,l)也是一樣的效果
將 F 或者 f 附加到帶小數(shù)點的數(shù)字上岗,表示float類型的常量
將 L 附加到帶小數(shù)點的數(shù)福荸,表示 long double 類型
對于整數(shù)類型,U 表示無符號類型(unsigned int)肴掷,L 表示long int 類型敬锐,UL 表示unsigned long int類型
C99 允許通過指定后綴LL(或者ll)指定 long long 類型
Example | date type |
---|---|
1 123 21000 -234 | int |
34567L -34L | long int |
10000U 987u 40000U | unsigned int |
129.34F 4.34e-3f | float |
123.23 1.0 -0.98763241 | double |
1001.2L | long double |