1、c和c++語言中基本的資料型別有:字元型(char),整形(short, int, long), 浮點型(float, double)
同時字元型和整形還可以繼續分為帶符號的和不帶符號的,預設情況下都是帶符號的,如果想使用不帶符號的,則使用時帶上 unsigned說明即可,如果是帶符號的,那麼最高位將表示符號位,最高位為0表示為正數,最高位為1表示為負數,因此根據這個可以得到不同型別在分別帶符號和不帶符號的情況下表示的資料範圍:
型別
範圍
型別
範圍
(
signed
)char
-128
——127
unsigned char
0
——255
(signed) short
-32768
——32767
unsigned short
0
——65535
(signed ) int
-32768
——32767
unsigned short
0
——65535
(signed) long
-2147483648
——2147483647
unsigend long
0
——4294967295
float
-3.4*10-38
——3.4*1038
double
-1.7*10-308
——1.7*10308
2、對於字元型和整形特別需要注意其表示的範圍,如果運算導致超出其範圍的處理,如以下的**:
int main()
輸出結果為:-128,注意,定義ch時賦予的值為127,已經是char能表示的最大數,其最終結果-128的來歷是這樣的:
第一步:首先127在計算機中用二進位制表示為:01111111;
第二步:01111111 + 00000001 = 10000000;
第三步:由於ch是帶符號的,當最高位為1時,表示是負數,而負數的計算機中是利用補碼來儲存的,回憶計算負數補碼的方法(首先取負數的絕對值,然後求二進位制,對二進位製取反,在對取反後的值加1,即為負數的補碼);
第四步:於是根據求補碼的反步驟,我們來求最原始的負數,由於本題中補碼為10000000,首先10000000 - 00000001 = 01111111,然後對01111111取反為10000000,10000000 = 128,由於本身是負數,即ch為-128.
int main()
輸出結果為:0;
其分析為:首先ch = 255提公升為整形,在計算機的儲存為:(000....)11111111,然後(000....)11111111+1 = (000...)0001 00000000;然後再將最後的八位二進位制擷取給ch,由於最後八位全是0,因此ch = 0了。
同理:對於遇到整形int short, long等出現上述情況時,我們也可以這樣分析得到結果。
型別轉換
1、將實型資料(包含單、雙精度)賦值給整型變數時,捨棄實數的小數部分。
2、將整型資料賦值給單雙精度變數時,數值不變,但以浮點數形式儲存到變數中
3、將乙個double型資料賦值給float資料時,擷取其前面7位有效數字,存放到float變數的儲存單元(32位)中。但應注意數值範圍不能溢位
將乙個float資料賦值給double變數時,數值不變,有效位數擴充套件到16位,在記憶體中以64位儲存
4、字元型資料賦值給整型變數時,由於字元只佔乙個位元組,而整型變數為2個位元組,因此將字元資料(8位)放到整型變數的低8位中。有兩種情況:
(1)如果所用系統將字元處理為無符號的量或是對unsigned char型變數賦值,則將字元的低8位放到整型變數的低8位,高8位補零。
(2)如果所用系統將字元處理為有符號的(signed char),若字元最高位為0,則整型變數高8位補零;若字元最高位為1,則高8位全補1.這稱為符號擴充套件。
5、將乙個int、short、long型資料賦值給乙個char型變數時,只將其低8位原封不動地送到char型變數
將乙個long型資料付給乙個int型變數時,只將long型資料中的低16位原封不動地送到整型變數,這稱為「截斷」
6、將unsigned int型資料賦值給long int型變數時,不存在符號擴充套件問題,只需將高位補0即可
C和C 語言中基本的資料型別
1 c和c 語言中基本的資料型別有 字元型 char 整型 short,int,long 浮點型 float,double 同時字元型和整型還可以繼續分為帶符號的和不帶符號的,預設情況下都是帶符號的,如果想使用不帶符號的,則使用時帶上 unsigned說明即可,如果是帶符號的,那麼最高位將表示符號位...
C語言中基本整型資料型別
c語言中的基本整型資料型別 整型家族包括字元 短整型 整型 長整型,它們都分為有符號和無符號兩種版本 整型值相互之間的大小的規則 長整型至少應該和整型一樣長,而整型至少應該和短整型一樣長 一般情況下各種型別在32 64位機上的大小 long,unsigned long pointer為機器全字長,其...
C語言中的基本資料型別
寫在前面 剛學習c語言,想通過寫部落格的方式來鞏固和加強自己對於c語言的理解,希望可以獲得一些大佬的指點。在vs2010編譯器下 資料型別 資料型別符 占用位元組數 數值範圍 整型int 4 2147483648 2147483647 231 231 1 短整型short 2 32768 32767...