C語言數據類型

1.概述數組

  C 語言包含的數據類型以下圖所示:函數

2.各類數據類型介紹測試

2.1整型指針

  整形包括短整型、整形和長整形。orm

2.1.1短整形內存

  short a=1;作用域

2.1.2整形開發

  通常佔4個字節(32位),最高位表明符號,0表示正數,1表示負數,取值範圍是-2147483648~2147483647,在內存中的存儲順序是地位在前、高位在後,例如0x12345678在內存中的存儲以下:編譯器

  地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b內存管理

  數據:  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;

  地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b

  數據:  00      00        90      40

2.2.2雙精度型

  通常佔8個字節(64位)

  double a=4.5;

  地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b  0x0012ff7c  0x0012ff7d  0x0012ff7e  0x0012ff7f

  數據:  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)
{
   int x = p_1;
}
void static_p(void)
{
   int foo = 1u;
}

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)不一樣類型數據之間的運算要注意精度擴展問題,通常低精度數據將向高精度數據擴展。

相關文章
相關標籤/搜索