1.概述
c 語言包含的資料型別如下圖所示:
2.各種資料型別介紹
2.1整型
整形包括短整型、整形和長整形。
2.1.1短整形
short a=1;
2.1.2整形
一般佔4個位元組(32位),最高位代表符號,0表示正數,1表示負數,取值範圍是-2147483648~2147483647,在記憶體中的儲存順序是地位在前、高位在後,例如0x12345678在記憶體中的儲存如下:
資料: 78 56 34 12
定義:用int關鍵字,舉例如下:
int a=6;
2.1.3長整形
long a=10;
2.2浮點型
浮點型包括單精度型和雙精度型。
2.2.1單精度型
浮點型,又稱實型,也稱單精度。一般佔4個位元組(32位),
float a=4.5;
資料: 00 00 90 40
2.2.2雙精度型
一般佔8個位元組(64位)
double a=4.5;
資料: 00 00 00 00 00 00 12 40
2.3字元型別
在各種不同系統中,字元型別都佔乙個位元組(8位)。定義如下:
char c='a';
也可以用字元對應的ascii碼賦值,如下:
char c=97;
3.資料型別與「模子」
short、int、long、char、float、double 這六個關鍵字代表c 語言裡的六種基本資料型別。
怎麼去理解它們呢? 舉個例子:見過藕煤球的那個東西吧?(沒見過?煤球總見過吧)。那個東西叫藕煤器,拿著它在和好的煤堆裡這麼一咔,乙個煤球出來了。半徑12cm,12 個孔。不同型號的藕煤器咔出來的煤球大小不一樣,孔數也不一樣。這個藕煤器其實就是個模子。
現在我們聯想一下,short、int、long、char、float、double 這六個東東是不是很像不同型別的藕煤器啊?拿著它們在記憶體上咔咔咔,不同大小的記憶體就分配好了,當然別忘了給它們取個好聽的名字。
在32 位的系統上short 咔出來的記憶體大小是2 個byte;
int 咔出來的記憶體大小是4 個byte;
long 咔出來的記憶體大小是4 個byte;
float 咔出來的記憶體大小是4 個byte;
double 咔出來的記憶體大小是8 個byte;
char 咔出來的記憶體大小是1 個byte。
(注意這裡指一般情況,可能不同的平台還會有所不同,具體平台可以用sizeof 關鍵字測試一下)
很簡單吧?咔咔咔很爽吧?是很簡單,也確實很爽,但問題就是你咔出來這麼多記憶體塊,你總不能給他取名字叫做x1,x2,x3,x4,x5…或者長江1 號,長江2 號…吧。它們長得這麼像(不是你家的老大,老二,老三…),過一陣子你就會忘了到底哪個名字和哪個記憶體塊匹配了(到底誰嫁給誰了啊?^_^)。所以呢,給他們取乙個好的名字絕對重要。下面我們就來研究研究取什麼樣的名字好。
4.變數的命名規則
1)命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
識別符號最好採用英文單詞或其組合,不允許使用拼音。程式中的英文單詞一般不要太複雜,用詞應當準確。
2)命名的長度應當符合「min-length && max-information」原則。
c 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名maxval 就比maxvalueuntiloverflow 好用。識別符號的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。
3)當識別符號由多個詞組成時,每個詞的第乙個字母大寫,其餘全部小寫。比如:
int currentval;
這樣的名字看起來比較清晰,遠比一長串字元好得多。
4)盡量避免名字中出現數字編號,如value1,value2 等,除非邏輯上的確需要編號。比如驅動開發時為管腳命名,非編號名字反而不好。
初學者總是喜歡用帶編號的變數名或函式名,這樣子看上去很簡單方便,但其實是一顆顆定時炸彈。這個習慣初學者一定要改過來。
5)對在多個檔案之間共同使用的全域性變數或函式要加範圍限定符(建議使用模組名(縮寫)作為範圍限定符)。
(gui_ ,etc)識別符號的命名規則:
6)識別符號名分為兩部分:規範識別符號字首(字尾) + 含義標識。非全域性變數可以不用使用範圍限定符字首。
7)作用域字首命名規則。
8)資料型別字首命名規則。
9)含義標識命名規則,變數命名使用名詞性片語,函式命名使用動詞性片語。例如:
變數含義識別符號構成:目標詞+ 動詞(的過去分詞)+ [狀語] + [目的地];
函式含義識別符號構成:動詞(一般現時)+目標詞+[狀語]+[目的地];
10)程式中不得出現僅靠大小寫區分的相似的識別符號。例如:
int x, x; 變數x 與x 容易混淆
void foo(int x); 函式foo 與foo 容易混淆
void foo(float x);
這裡還有乙個要特別注意的就是1(數字1)和l(小寫字母l)之間,0(數字0)和o(小寫字母o)之間的區別。這兩對真是很難區分的,我曾經的乙個同事就被這個問題折騰了一次。
11)乙個函式名禁止被用於其它之處。例如:
#include "c_standards.h"
void foo(int p_1)
void static_p(void)
12)所有巨集定義、列舉常數、唯讀變數全用大寫字母命名,用下劃線分割單詞。例如:
const int max_length = 100; //這不是常量,而是乙個唯讀變數,具體請往後看
#define file_path 「/usr/tmp」
13)考慮到習慣性問題,區域性變數中可採用通用的命名方式,僅限於n、i、j 等作為迴圈變數使用。
一定不要寫出如下這樣的**:
int p;
char i;
int c;
char * a;
一般來說習慣上用n,m,i,j,k 等表示int 型別的變數;c,ch 等表示字元型別變數;a 等表示陣列;p 等表示指標。當然這僅僅是一般習慣,除了i,j,k 等可以用來表示迴圈變數外,別的字元變數名盡量不要使用。
14)定義變數的同時千萬千萬別忘了初始化。定義變數時編譯器並不一定清空了這塊記憶體,它的值可能是無效的資料。這個問題在記憶體管理那章有非常詳細的討論,請參看。
15)不同型別資料之間的運算要注意精度擴充套件問題,一般低精度資料將向高精度資料擴充套件。
C語言之基本資料型別
在學習c語言的時候,我們可能首先面對的就是c語言中基本的資料型別,下面來看一下c語言中一些基本的資料型別。基本資料型別 void 宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。c89標準新增 char 字元型型別資料,屬於整型資料的一種。k r時期引入 int 整型資料,表示範圍通常為...
C語言之基本資料型別
c語言之基本資料型別 c語言之基本資料型別 整型,字元型,浮點型 整型的分類 整型可以分為短整型 short int 整型 int 長整型 long int 長長整型 long long int 四種,每種都可以分為有符號和無符號兩種 字元型資料型別 c語言中字元型資料型別只有一種 char型資料型...
R語言之基本資料型別
1.vector 所有的元素必須是同一型別。例如下面的 建立了2個vectors.name c mike lucy john age c 20,25,30 2.array matrix matrix是一種特殊的vector。maxtrix是乙個擁有兩個額外屬性的vector 行數和列數。x matr...