新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32——C語言數據類型

        STM32——C語言數據類型

        作者: 時間:2016-11-24 來源:網絡 收藏
        在編程過程中,不同的CPU,其數據類型的意義各不相同,所以一定要注意相應變量數據類型的定義和轉換,否則在計算中可能會出現不確定的錯誤。

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

        本文引用地址:http://www.104case.com/article/201611/320693.htm

        整型: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);

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



        關鍵詞: STM32C語言數據類

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 徐州市| 纳雍县| 济阳县| 南城县| 邵武市| 图片| 罗城| 闽侯县| 修文县| 平安县| 公安县| 泸水县| 延安市| 双江| 锡林浩特市| 辛集市| 山东省| 兴业县| 绥德县| 普格县| 连平县| 桓台县| 宜章县| 绥滨县| 板桥市| 曲麻莱县| 建水县| 登封市| 伊春市| 开远市| 长汀县| 布尔津县| 济源市| 古交市| 屯门区| 交口县| 襄城县| 蓬溪县| 二连浩特市| 南昌县| 莱州市|