1. 資料型別分類
基本型別
整數型別 shortint, int, long
int , long
long
int浮點數型別
float-單精度 double-雙精度 long
double
字元型別
char
布林型別 _bool
列舉型別
通過sizeof 可以看到,每種型別在記憶體中預留的位置是多大。
#include intmain()
short
intis
2int length is
4long
intis
8long
long
intis
8floatis4
doubleis8
_bool is1
long duoble int
is16
單位是位元組
signed:帶符號,可以表示負數
unsigned:不帶符號,只能表示0和正數
指標型別
構造型別
空型別2. 數值型別的數值範圍
位元位,cpu能讀懂的最小單位,bit
記憶體中最小的定址單位,byte
每個bit,只能存放0和1
1個byte能夠表示的最大的二進位制數,為1111 1111。10進製表示為255。2**8 - 1
int 能存放4個位元組的數字,4個位元組就是4*8=32個bit,能存放的最大是32個1,10進製表示為 2**32-1 = 42949967295。也就數說int最大能存的數是42949967295,但是實際上不是這樣的。
int 要分為帶符號和不帶符號。
如果是帶符號,既可以表示正數,也可以表示負數。32個位元組,第乙個位元組用來表示符號位,0表示正數,1表示負數。
那麼能用的只剩下,31個位可以使用,
符號位為1的情況,31為能表示的數是31個1,2**31-1=2147483647。
符號位為0的情況,比較麻煩,計算機如何存放負數,通過補碼的形式存放負數,負數的補碼就不是二進位制數了
計算機存放的都是補碼。
補碼是怎麼來的呢?原碼---反碼---補碼
7在計算機中的原碼為 0 000 0111,最高位0表示正數,符號位,其餘為數值位
7在計算機中的反碼為 0 000 0111,正數的原碼和反碼一樣。
7在計算機中的補碼為 0 000 0111,正數的補碼和反碼一樣。
-7在計算機中的原碼為 1 000 0111,最高位1表示負數。
-7在計算機中的反碼為 1 111 1000,最高位1表示負數,在原碼的基礎上,符號位不變,數值位為全部取反,0變成1,1變成0
-7在計算機中的補碼為 1 111 1001, 最高位1表示負數,在反碼的基礎上,符號位不變,數值位的最後一位+1。
為什麼要存放補碼呢?是因為存放補碼可以用+表示加和減,一舉兩得。
-7+7怎麼表示呢?全是補碼的相加
1 111 1001
0 000 0111
1 111 1112 ,捨棄最高位(符號位)進製後變成 000 0000,結果為0。
-7-7 怎麼表示呢?也是補碼的相加。-7 + (-7)
1 111 1001
1 111 1001
1 2222002 進製後變成 1 111 0010,這是補碼的形式,如果變成反碼為 1 111 0001 在變成 原碼為 1 0001110 表示 -14。
計算機如果最高位字元位為1,表示為負數,需要將數值位-1,然後字元位取反,變成原碼,就知道是負多少了。
存放補碼的意義是為了讓減法變成加法來運算,比較快。不需要借位。算完的結果仍然是補碼。
8個位元位,最小的負數是多少呢?負數的補碼,0越多,數值越大,表示的負數就越小。
補碼:1 000 0001---反碼為--- 1000 0000 ---原碼為----1 111 1111 表示 -127
補碼:1 000 0000---反碼為----1 1111 1111 ---原碼為 ---- 1 000 0000 表示 -128, 因為 1000 0000的二進位制沒有對應的任何真數,所以認為規定了為-128。
8個位元位,最大的整數是多少呢?正數色補碼,1越多,數值越大,表示的正數越大。
補碼 0 111 1111 --- 反碼為 --- 0 111 1111 ---原碼為---- 0 111 1111 表示 127。
補碼 0 000 0000 --- 反碼為 ---- 0 000 0000 ---原碼為--- 0 000 0000 表示 0。
因此8個位元位的字元,反碼能夠表示帶符號的範圍為 [-128,127]
3. 字元和字串
#include int67就是c在ascii碼表中對應的值main()
root@ubuntu:/home/yanyanzhang/c_study# gcc test4.c -o test4 && ./test4
c = 67
字元型別就是乙個特殊的整型,值都是對應到ascii碼表中的十進位制值。
重點: char型別預設不是signed char,c語言並沒有規定預設值,預設值是由編譯系統自行決定,int等預設就是singed int。
舉例說明:
#include int身高竟然是-86,很奇怪,因為ubuntu系統的gcc指定了char預設是signed char,取值範圍是-128,127,身高170超過了這個值,所以返回了怪怪的值-86。main()
root@ubuntu:/home/yanyanzhang/c_study# gcc test5.c -o test5 && ./test5
my height
is -86
將 char height;改為 unsigned char height;讓取值範圍變成0,255之間
root@ubuntu:/home/yanyanzhang/c_study# gcc test5.c -o test5 && ./test5字串,宣告 char 變數名[字元數量] ,申請了乙個連續長度的空間。my height
is170
#includeint# todomain()
; printf(
"name:%s\n
",name);
return0;
}root@ubuntu:/home/yanyanzhang/c_study# gcc test6.c -o test6 && ./test6
name:zhzzz 沒有出現亂碼,c語言定義字串的時候,要指定乙個結束位,\0,否則不知道從**結束
第三章基礎資料型別
go語言資料型別分類 基礎型別 復合型別 引用型別和介面型別 基礎型別 數字 字串和布林型 有符號和無符號的整數運算 int8 int16 int32 int64四種不同大小的有符號整數型別 uint8 uint16 uint32 uint64四種無符號整數型別 unicode字元rune型別是和i...
第三章 Python資料型別
3.1 python簡單資料型別 3.1.1 字串 str python中的字串通常由單引號 雙引號 三個單引號或三個雙引號包圍的一串字元組成。1.轉義字串 n 換行符 t 製表符 r 回車 字元 單引號字串中的單引號 雙引號字串中的雙引號 2.字串運算 python中是可以使用 運算子運算的。連線...
第三章 資料型別(中)測試
1.列表 元組 字串是 python 的 序列。無序 2.填空題 關鍵字既可以刪除列表中的乙個元素,也可以刪除整個列表。正確答案 del 3.填空題 已知列表 x 1,2,3 那麼執行語句 x.pop 0 之後,x 的值為 正確答案 2,3 這個要特別注意的是要細心.注意 pop 0 表示去首位而不...