//整形家族
char
//字元資料型別
short
//短整形
int//整形
long
//長整形
long
long
//更長的整形
//浮點數家族
float
//單精度浮點數
double
//雙精度浮點型
//它們的大小決定了使用範圍,根據不同的型別開闢相應的記憶體空間。
//構造型別:
1.陣列型別
2.結構體型別 struct
3.列舉型別 enum
4.聯合型別 union
#include
intmain()
a b的輸出比較好理解,但c可以來算一下
10000001 -1的原碼
11111110 -1的反碼
11111111 -1的補碼
當乙個無符號1位元組的整形以%d 輸出時就涉及到整形提公升(表示式中的字元和短整形運算元在使用之前被轉換為普通整形 32bit位),所有-1輸出是在它前面加上符號位,有符號就加1,無符號就加0,直到補齊到32bit位,即變成 0000 0000 0000 0000 0000 0000 11111111,依據整形來說就是2^8-1=255
2.
#include
intmain()
分析:char型別1個位元組8個位元位,若表示無符號數字是00000000~11111111 即0~255 ,若表示有符號數最高位元位應是符號位。
此題中10000000 -128 整形提公升後為:
1111 1111 1111 1111 1111 1111 1000 0000
按無符號整形十進位制輸出即4294967168
3.
#include
intmain()
char能表示的有符號數字的範圍是0127和-1281,本題char中的8個位元位已經不夠表示128,我們可以借一位表示,即110000000,此時最高位依然表示符號位,整形提公升增加符號位後為
1111 1111 1111 1111 1111 1111 1000 0000
按無符號整形十進位制輸出即4294967168
4.
#include
intmain()
i的二進位制原碼為1000 0000 0000 0000 0000 0000 0001 0100
j的二進位制原補碼為0000 0000 0000 0000 0000 0000 0000 1010
按照補碼的形式進行運算,最後格式化成為有符號整數為
1000 0000 0000 0000 0000 0000 0000 1010 -10
5.
#include
intmain()
return0;
}
死迴圈了,因為i是乙個無符號數不可能是負數,所以條件一定成立的,就一直死迴圈
6.
#include
intmain()
printf
("%d"
,strlen
(a))
;//255
return0;
}
a是乙個無符號的陣列,無符號只能放入的數字範圍為0-255,所以在第乙個數字-1(11111111)存入陣列時陣列以乙個無符號數255存入,-2以無符號數254存入,以此類推,當存入』0』時strlen就找到了停止符停下,此時陣列裡存入了255~1,有255個數字。
7.
#include
intmain()
短整形的取值範圍是-32768~32767,16位元位,32767二進位制為
0111 1111 1111 1111加1為
1000 0000 0000 0000此時為補碼,-1然後按位取反任然是1000 0000 0000 0000
即-32768
8.
#include
unsigned
char i =0;
intmain()
return0;
}
死迴圈了,i是乙個無符號數,範圍是0~255,所以for迴圈的條件一直成立,程式一直迴圈下去。
根據國際標準ieee(電氣電子工程師學會)754,任意乙個二進位制浮點數x可以表示成下面的形式:
資料在記憶體中的儲存解析
大家都直到,在c語言中有很多的資料型別,基本的內建型別有char,short,int long,long long,float,double,這些內建的型別可以分為整形家族和浮點數家族。而我們常用的也就是這兩種型別,這回就深度解析一下整形和浮點型在記憶體中的儲存。我們知道,定義乙個變數在記憶體中是需...
深度剖析資料在記憶體中的儲存
我們要想知道資料如何在記憶體中的儲存,就必須先談談資料型別的意義 1 如果我們把記憶體看成乙個個房間,那麼資料型別就決定了房間號和房間大小,這樣應該很好理解了吧 接下來我們來談談資料型別的分類 1 整形家族 char 有符號字元型,只不過把signed省略了 unsigned char 無符號型別字...
深度學習資料在記憶體中的儲存 C C
資料型別分類 1.整形 short 短整型 2 byte unsigned short int 無符號位 signed short int 有符號位 int 整形 4 byte unsigned int signed int long 長整型 8 byte unsigned long int sig...