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