<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 嵌入式C語(yǔ)言里的土豪們之變量類(lèi)型

嵌入式C語(yǔ)言里的土豪們之變量類(lèi)型

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

  里的們之變量類(lèi)型

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

  上一篇我們談到了運算奢華大戶(hù)除法(詳見(jiàn)《里的們之除法與移位》http://dyxdggzs.com/article/182359.htm),這們再來(lái)研究一下內存的消耗——變量類(lèi)型的定義。

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

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

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

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

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

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>