C學習隨筆

1.數據類型的長度是由誰決定的?

首先與CPU有關,其次與編譯系統和適用平臺也有關。最直接的使用,長度有編譯系統決定。而不是有操作系統決定。

2.

32位機

32位機

類型 最小範圍
char 0~127
signed char -127~127
unsigend char 0~254
short int -32767~32767
unsigned short int 0~65535
int -32767~32767
unsigned int 0~65535
long int -2147483647~2147483647
unsigned long int 0~4294967295

3.編寫一段代碼,可在兩臺機器上實現無修改移植,這兩臺機器的區別爲:

a機器:缺省類型爲16位,長整形爲32位

b機器:缺省類型爲32位,長整形爲64位

其它具體情況:程序所使用的有些變量的值並不太大,足以保存與任何一臺機器的缺省整形變量中,但有些變量較大,必須32位才能保存。


解決方案分析:

1.可以將所有數據統一定義爲32位long型,但是,這對與那些只需要16位就可定義的數據來說,對系統時間和空間的浪費不可忽視。所有此法不可取;

2.可以嘗試使用頭文件,在自己定義的頭文件中,將16位,32位數據類型使用typedef重新定義聲明,將兩種平臺的數據類型整合到一個頭文件下,到時候各取所需。這也是現在嵌入式編程的常用方式。

引用-----聲明整型變量名,使變量的類型必須有一個確定的長度(如int8,int16,int32)。對於你希望成爲缺省長度的整數,根據它所容納的最大值,使用類似defint8,defint16,defint32這樣的名字。然後爲每臺機器創建一個名爲int_size.h的文件,它包含一些typedef聲明,爲你創建的類型名字選擇最合適的整形長度。

在一個典型的32位機器上,這個文件包括:

typedef  signed char     int8;
typedef  short int            int16;
typedef  int                      int32;     
typedef  int                      defint8;
typedef  int                      defint16;
typedef  int                      defint32;
在一個16位機器上,這個文件包括:

typedef  signed char     int8;
typedef  short int            int16;
typedef  long int             int32;     
typedef  int                      defint8;
typedef  int                      defint16;
typedef  int                      defint32;
這樣,就可以統一使用。


4.枚舉存在的意義

隨着計算機的不斷普及,程序不僅只用於數值計算,還更廣泛地用於處理非數值的數據。例如:性別、月份、星期幾、顏色、單位名、學歷、職業等,都不是數值數據。 在其它程序設計語言中,一般用一個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程序中用自然語言中有相應含義的單詞來代表某一狀態,則程序就很容易閱讀和理解。也就是說,事先考慮到某一變量可能取的值,儘量用自然語言中含義清楚的單詞來表示它的每一個值,這種方法稱爲枚舉方法,用這種方法定義的類型稱枚舉類型















發佈了32 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章