色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 嵌入式C語言里的土豪們之變量類型

          嵌入式C語言里的土豪們之變量類型

          作者:jobs 時(shí)間:2013-10-24 來源:電子產(chǎn)品世界 收藏

            里的們之變量類型

          本文引用地址:http://cafeforensic.com/article/184332.htm

            上一篇我們談到了運(yùn)算奢華大戶除法(詳見《里的們之除法與移位》http://cafeforensic.com/article/182359.htm),這們?cè)賮硌芯恳幌聝?nèi)存的消耗——變量類型的定義。

            “定義變量的類型要根據(jù)該變量使用的大小范圍來定,在滿足其最大值的條件下,使用最小空間的變量類型。”這條定義方式我們初學(xué)編程的人們都會(huì)遇到,那么這個(gè)如何去執(zhí)行也成為了關(guān)鍵。例如,我們?cè)诙x時(shí)鐘項(xiàng)目時(shí),使用一個(gè)變量來代表“秒”的變量,顯然,這個(gè)“秒”變量的最大值是60。那么,我們就可以使用“char”類型來定義他了。很簡(jiǎn)單,“0-59”的變量范圍,最小的范圍為128范圍內(nèi)的char,而int類型要達(dá)到了32726,看吧!還是char類型更小、更節(jié)省類型??墒牵浔澈蟮恼娴挠羞@么簡(jiǎn)單嗎?跟著筆者一起來探討吧!

            這個(gè)想法的初衷肯定是為了節(jié)省內(nèi)存,當(dāng)然,筆者首先同意這種以最大值來考慮定義變量范圍,并選擇是有符號(hào)類型,還是無符號(hào)類型。然而,針對(duì)我們嵌入式編譯器來說,還是使用可移植的固定長度方式來定義我們所有的變量。

            當(dāng)我們看到“char seconds;”這一句的時(shí)候,其實(shí)很難理解原作者的意思。因?yàn)槲覀儾恢涝髡呤褂?ldquo;char”類型是僅僅為了其數(shù)值表示范圍已經(jīng)符合了要求,還是出于其它目的?異或是,原作者已經(jīng)深知編譯器默認(rèn)會(huì)將“char”類型轉(zhuǎn)換為“unsigned char”?“short long”的變量類型也會(huì)如此之“麻煩”。因此一個(gè)“short”變量類型可以是16位,也可以是32位,這個(gè)完全取決于編譯器與我們目標(biāo)處理器的位寬——這個(gè)原作者應(yīng)該已經(jīng)知道,當(dāng)然,也許被忽略了。

            “無論何時(shí)都要使用C99格式的可移植固定類型來定義變量的長度。”

            Uint16_t這種類型定義方式,我想,你絕對(duì)不會(huì)理解錯(cuò)的我用意,即使我已經(jīng)沉睡百年……這種類型定義的方式不僅新添了變量而且同時(shí)也更好的注釋了定義類型,極大的增加了源代碼的可讀性。C99標(biāo)準(zhǔn)已經(jīng)為大家預(yù)定義了各種固定長度的變量,也是時(shí)候?qū)?ldquo;short”“long”等類型從我們的源文件里剔除的時(shí)候了,甚至在我們?cè)趹?yīng)用中就使用ASCII碼來表示的字符也不要使用“char”類型。任何事情也不要絕對(duì)化,如果我們僅僅在某個(gè)循環(huán)中使用了“int I ”也是無所謂的。

            這里筆者提示一下大家,如果不想自己去編譯測(cè)試各個(gè)變量的類型寬度,也可以使用“stdint.h”的頭文件,C99編譯器已經(jīng)為大家準(zhǔn)備好了。如果只想使用多少位,也可以使用uint_leastN_t 與uint_fastN_t來定義。

            運(yùn)算與內(nèi)存我們都研究完了,大家想動(dòng)手寫代碼嗎?

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          c語言相關(guān)文章:c語言教程




          關(guān)鍵詞: 嵌入式 C語言 土豪 變量定義

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉