stm32——c語言資料型別
在程式設計過程中,不同的cpu,其資料型別的意義各不相同,所以一定要注意相應變數資料型別的定義和轉換,否則在計算中可能會出現不確定的錯誤。
(一)c語言中的種類資料
整型:int short long
實型:float double
stm32中的資料型別非常的多,常用的變數,檔案中的定義如下:
/* exact-width signed integer types */
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __int64 int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
還有float int編譯器中不能看到其定義(估計已編譯了)。
因此在stm32程式設計中,常用的資料型別有:char(字元型),u8,u16 ,u32,但是在一些計算中,涉及到負數,小數,因此要用到:int float doulbe 型。
其中u8——1個位元組,無符號型(不能表達負數,如果用來當作負數的話,就出錯了);
u16 ——2個位元組,無符號型(參看前邊stm32f10x.h中的定義);
u32——4個位元組,無符號型;
int——4個位元組,有符號型,可以表達負整數;
float ——4個位元組,有符號型,可以表達負數/小數;
double——8個位元組,有符號弄,可以表達負數/小數;
(二)不同型別資料的混合運算
在c語言中,不同型別的資料間是可以混合運算的。在進行運算時,不同型別的資料要先轉換成同一型別,然後進行運算。轉換的規則如下:
注意:箭頭的方向只表示資料型別級別的高低,由低向高轉換,這個轉換過程是一步到位的。
(三)資料型別轉換規則
各類資料型別的轉換,分為兩種方式:隱式(編譯軟體自動完成),顯式(程式強制轉換)
隱式轉換規則:
字元必須先轉換為整數(c語言規定字元型別資料和整型資料之間可以通用)
short型轉換為int型(同屬於整型)
float型資料在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬於實型)
賦值時,一律是右部值轉換為左部型別
[注]
當整型資料和雙精度資料進行運算時,c先將整型資料轉換成雙精度型資料,再進行運算,結果為雙精度型別資料
當字元型資料和實型資料進行運算時,c先將字元型資料轉換成實型資料,然後進行計算,結果為實型資料
顯式轉換規則:
例:(int)(x+y);
注:強制型別轉換時,得到乙個所需要的中間變數,原來變數的型別未發生變化。
C語言 資料型別
基本型別 整形 int 字元型 char 實型 浮點型 單精度 float 雙精度 double 構造型別 陣列型別,結構型別 struct 聯合型別 uion 列舉型別 enum 指標型別 空型別 無值型別 void。常量 在程式執行過程中,其值不能被改變的量稱為常量。變數 變數代表記憶體中具有特...
c語言資料型別
下面是我關於c語言中各種資料型別長度的總結 參考the c programming language 1.c語言中的整數型別有char,short,int,long等幾種,下面是c語言對每種資料型別長度的規定 a short和long型別的長度不相同 b int型別通常同具體機器的物理字長相同 c ...
C語言 資料型別
整形資料在記憶體中的存放形式 數值是以補碼表示的 1.正數的補碼和原始碼相同,2.負數的補碼 將該數的絕對值的二進位制形式按位取反再加1.例如 求 10 的補碼 10的原始碼 0000 0000 0000 1010 取反 1111 1111 1111 0101 再加1,得 10補碼 1111 111...