天天看點

char、short、int、long、char、float、double

肯定不一樣,實際程式設計中大家很少用char short int的,因為他們會随着cpu的不同而不同

實際中,大家會重新定義資料類型,像是這樣
typedef unsigned char  uint8;                   // 無符号8位整型變量  
typedef signed   char  int8;                    // 有符号8位整型變量  
typedef unsigned short uint16;                  // 無符号16位整型變量 
typedef signed   short int16;                   // 有符号16位整型變量 
typedef unsigned int   uint32;                  // 無符号32位整型變量 
typedef signed   int   int32;                   // 有符号32位整型變量 
typedef float          fp32;                    // 單精度浮點數(32位長度) 
typedef double         fp64;                    // 雙精度浮點數(64位長度)      
C 語言包含的資料類型如下圖所示:
 
  
        
char、short、int、long、char、float、double
一、資料類型與“模子” 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 号…吧。它們長得這麼像(不是你家的老大,老二,老三…),過一陣子你就會忘了到底哪個名字和哪個記憶體塊比對了(到底誰嫁給誰了啊?^_^)。是以呢,給他們取一個好的名字絕對重要。下面我們就來研究研究取什麼樣的名字好。 二、變量的命名規則 1、命名應當直覺且可以拼讀,可望文知意,便于記憶和閱讀。 辨別符最好采用英文單詞或其組合,不允許使用拼音。程式中的英文單詞一般不要太複雜,用詞應當準确。 2、命名的長度應當符合“min-length && max-information”原則。 C 是一種簡潔的語言, 命名也應該是簡潔的。例如變量名MaxVal 就比MaxValueUntilOverflow 好用。辨別符的長度一般不要過長,較長的單詞可通過去掉“元音”形成縮寫。 另外,英文詞盡量不縮寫,特别是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,并且注明其意思。 3、當辨別符由多個詞組成時,每個詞的第一個字母大寫,其餘全部小寫。比如:    int CurrentVal; 這樣的名字看起來比較清晰,遠比一長串字元好得多。 4、盡量避免名字中出現數字編号,如Value1,Value2 等,除非邏輯上的确需要編号。比如驅動開發時為管腳命名,非編号名字反而不好。 初學者總是喜歡用帶編号的變量名或函數名,這樣子看上去很簡單友善,但其實是一顆顆定時炸彈。這個習慣初學者一定要改過來。 5、對在多個檔案之間共同使用的全局變量或函數要加範圍限定符(建議使用子產品名(縮寫)作為範圍限定符)。 (GUI_ ,etc)辨別符的命名規則: 6、辨別符名分為兩部分:規範辨別符字首(字尾) + 含義辨別。非全局變量可以不用使用範圍限定符字首。
char、short、int、long、char、float、double
7、作用域字首命名規則。
char、short、int、long、char、float、double
8、資料類型字首命名規則。
char、short、int、long、char、float、double
char、short、int、long、char、float、double
char、short、int、long、char、float、double
9、含義辨別命名規則,變量命名使用名詞性詞組,函數命名使用動詞性詞組。例如:
char、short、int、long、char、float、double
變量含義辨別符構成:目标詞+ 動詞(的過去分詞)+ [狀語] + [目的地];
char、short、int、long、char、float、double
函數含義辨別符構成:動詞(一般現時)+目标詞+[狀語]+[目的地]; 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、不同類型資料之間的運算要注意精度擴充問題,一般低精度資料将向高精度資料擴充。