新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32——C語言數(shù)據(jù)類型

STM32——C語言數(shù)據(jù)類型

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
在編程過程中,不同的CPU,其數(shù)據(jù)類型的意義各不相同,所以一定要注意相應(yīng)變量數(shù)據(jù)類型的定義和轉(zhuǎn)換,否則在計算中可能會出現(xiàn)不確定的錯誤。

(一)C語言中的種類數(shù)據(jù)

本文引用地址:http://m.butianyuan.cn/article/201611/320693.htm

整型:int short long

實型:float double

STM32中的數(shù)據(jù)類型非常的多,常用的變量,文件中的定義如下:

/* 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編程中,常用的數(shù)據(jù)類型有:char(字符型),u8,u16 ,u32,但是在一些計算中,涉及到負(fù)數(shù),小數(shù),因此要用到:int float doulbe 型。

其中u8——1個字節(jié),無符號型(不能表達(dá)負(fù)數(shù),如果用來當(dāng)作負(fù)數(shù)的話,就出錯了);

u16 ——2個字節(jié),無符號型(參看前邊STM32f10x.h中的定義);

u32——4個字節(jié),無符號型;

int——4個字節(jié),有符號型,可以表達(dá)負(fù)整數(shù);

float ——4個字節(jié),有符號型,可以表達(dá)負(fù)數(shù)/小數(shù);

double——8個字節(jié),有符號弄,可以表達(dá)負(fù)數(shù)/小數(shù);

(二)不同類型數(shù)據(jù)的混合運算

在C語言中,不同類型的數(shù)據(jù)間是可以混合運算的。在進(jìn)行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運算。轉(zhuǎn)換的規(guī)則如下:

注意:箭頭的方向只表示數(shù)據(jù)類型級別的高低,由低向高轉(zhuǎn)換,這個轉(zhuǎn)換過程是一步到位的。

(三)數(shù)據(jù)類型轉(zhuǎn)換規(guī)則

各類數(shù)據(jù)類型的轉(zhuǎn)換,分為兩種方式:隱式(編譯軟件自動完成),顯式(程序強制轉(zhuǎn)換)

隱式轉(zhuǎn)換規(guī)則:

字符必須先轉(zhuǎn)換為整數(shù)(C語言規(guī)定字符類型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用)
short型轉(zhuǎn)換為int型(同屬于整型)
float型數(shù)據(jù)在運算時一律轉(zhuǎn)換為雙精度(double)型,以提高運算精度(同屬于實型)
賦值時,一律是右部值轉(zhuǎn)換為左部類型
[注]
當(dāng)整型數(shù)據(jù)和雙精度數(shù)據(jù)進(jìn)行運算時,C先將整型數(shù)據(jù)轉(zhuǎn)換成雙精度型數(shù)據(jù),再進(jìn)行運算,結(jié)果為雙精度類型數(shù)據(jù)
當(dāng)字符型數(shù)據(jù)和實型數(shù)據(jù)進(jìn)行運算時,C先將字符型數(shù)據(jù)轉(zhuǎn)換成實型數(shù)據(jù),然后進(jìn)行計算,結(jié)果為實型數(shù)據(jù)

顯式轉(zhuǎn)換規(guī)則:

例:(int)(x+y);

注:強制類型轉(zhuǎn)換時,得到一個所需要的中間變量,原來變量的類型未發(fā)生變化。



評論


技術(shù)專區(qū)

關(guān)閉