筆者正在學習ucos-ii
,移植到
arm時考慮到資料型別的定義,但對於
keil mdk
編譯器的資料型別定義還是很模糊,主要就是區分不了
short int
、int
、long
和long int
占用多少位元組。為了得到乙個權威的答案,改用編譯器自身得出。
一、先定義幾個變數,用於存放各資料型別的位元組數。
//#include
#include
unsigned char a,b,c,d,e,f,g;
main()
三、檢視各位址存放的值。view---memory window。
由上圖可知得出:
指標型別
* 統一為4位元組
char占用
1個位元組
short int占用2位元組
int占用4位元組
long占用4位元組
long int占用4位元組
float占用4位元組
double占用8位元組
我們即可這樣定義巨集:
typedef unsigned char uint8; // 無符號
8位整型變數
typedef signed char int8; //
有符號8
位整型變數
typedef unsigned short uint16; //
無符號16
位整型變數
typedef signed short int16; //
有符號16
位整型變數
typedef unsigned int uint32; //
無符號32
位整型變數
typedef signed int int32; //
有符號32
位整型變數
typedef float fp32; //
單精度浮點數(
32位長度)
typedef double fp64; //
雙精度浮點數(
64位長度)
②檢視各變數的存放位址。
view---symbols window
。 下面是
real view
官方文件的說明:
常數意義
值十六進製制值
char_max
char的最大值
2550xff
char_min
char的最小值 0
0x00
schar_max
signed char的最大值
1270x7f
schar_min
signed char的最小值
–128
0x80
uchar_max
unsigned char的最大值
2550xff
shrt_max
short的最大值
32 767
0x7fff
shrt_min
short的最小值
–32 768
0x8000
ushrt_max
unsigned short的最大值
65 535
0xffff
int_max
int的最大值
2 147 483 647
0x7fffffff
int_min
int的最小值
–2 147 483 648
0x80000000
long_max
long的最大值
2 147 483 647
0x7fffffff
long_min
long的最小值
–2 147 483 648
0x80000000
ulong_max
unsigned long的最大值
4 294 967 295
0xffffffff
llong_max
long long的最大值
9.2e+18
0x7fffffff ffffffff
llong_min
long long的最小值
–9.2e+18
0x80000000 00000000
ullong_max
unsigned long long的最大值
1.8e+19
0xffffffff ffffffff
附加:四:
結構體成員引用,往往通過記憶體偏移計算,引用另外成員變數。這時需注意的有:
eg:sturct link; struct link link1;
unsigned int e=link1->c; uint * f= &link->a;
uint *g= *(
f+1);
// **g=link1->b
成員變數偏移計算注意:
1 得到乙個成員函式的記憶體位址,步進決定於運算成員的資料型別,如(
g=f+1,1
表示乙個單位
int長度,
uint 佔2
位元組),
這個最終得參考記憶體對齊原理,對齊了肯定遵從上規則
2 所取的記憶體運算後的位址賦值給g,
g的型別必須跟原基位址(原成員)的一致。
否則,運算出錯
keil 4 MDK各種資料型別占用的位元組數
筆者正在學習ucos ii 移植到 arm時考慮到資料型別的定義,但對於 keil mdk 編譯器的資料型別定義還是很模糊,主要就是區分不了 short int int long 和long int 占用多少位元組。為了得到乙個權威的答案,改用編譯器自身得出。一 先定義幾個變數,用於存放各資料型別的...
各種資料型別OuO
char 1 個位元組 128 到 127 或者 0 到 255 unsigned char 1 個位元組 0 到 255 signed char 1 個位元組 128 到 127 int4 個位元組 2147483648 到 2147483647 unsigned int 4 個位元組 0 到 4...
Qt 各種資料型別轉換
1 qstring string qstring.tostdstring 2 string qstring qstring fromstdstring string 3 qstring int,double,char qstring toint qstring todouble qstring.to...