- C語言程序設(shè)計
- 陸軍 安德智
- 5字
- 2019-10-14 11:25:02
2.3 整型數(shù)據(jù)
2.3.1 整型常量
整型常量就是指直接使用的整型常數(shù),如128、-256。整型常量可以是:
● 長整型:15000L -240000L 020000L 0x35000L
● 短整型:150 620U 06900 0x2400
● 有符號整型:-45 5462L 08500 0x147
● 無符號整型:500U 1000U 0560U 0x489U
說明:
(1)在整型常量后面加上符號L,表示該常量是長整型,如1000L,加上U表示該常量是無符號整型,如500U,否則就是有符號整型,如500。
(2)以0開頭的數(shù),是八進制數(shù),以0x開頭的數(shù)是十六進制數(shù)。
(3)短整型數(shù)可以是無符號數(shù),有符號數(shù)也可以是長整型數(shù)。
(4)有符號數(shù)可以為負(fù)數(shù),無符號數(shù)只能是正數(shù)。
(5)當(dāng)一個整型常數(shù)足夠大時,即使其后不加L,該數(shù)也為長整型。
注意:L和U既可大寫,又可小寫。
整型常量可以有以下3種表示形式:
(1)十進制整數(shù),十進制整數(shù)沒有前綴。其數(shù)碼為0~9。如124、-456、45。在程序中是根據(jù)前綴來區(qū)分各種進制數(shù)的。因此在書寫常數(shù)時不要把前綴弄錯造成結(jié)果不正確。
以下各數(shù)不是合法的十進制整常數(shù):023(不能有前導(dǎo)0),23D(含有非十進制數(shù)碼)。
(2)八進制整數(shù),需要在常數(shù)前加上0進行修飾,數(shù)碼取值為0~7。八進制數(shù)通常是無符號數(shù),如0123、0456。
以下各數(shù)不是合法的八進制數(shù):256(無前綴0),03A2(包含了非八進制數(shù)碼),-0127(出現(xiàn)了負(fù)號)。
(3)十六進制整數(shù),需要在常數(shù)前加上0x進行修飾,其數(shù)碼取值為0~9,A~F或a~f,如0x1A3,0x3D7,0x23。
以下各數(shù)不是合法的十六進制整常數(shù):5A(無前綴0X),0X3H(含有非十六進制數(shù)碼)。
整型常數(shù)的后綴:在16位字長的機器上,基本整型的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進制無符號整常數(shù)的范圍為0~65535,有符號數(shù)為-32768~32767。八進制無符號數(shù)的表示范圍為0~0177777。十六進制無符號數(shù)的表示范圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“l(fā)”來表示的。
例如:
十進制長整常數(shù):158L(十進制為158),358000L(十進制為358000)。
八進制長整常數(shù):012L(十進制為10),077L(十進制為63),0200000L(十進制為65536)。
十六進制長整常數(shù):0X15L(十進制為21),0XA5L(十進制為165),0X10000L(十進制為65536)。
長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對158L,因為是長整型量,C編譯系統(tǒng)將為它分配4個字節(jié)存儲空間。而對158,因為是基本整型,只分配2個字節(jié)的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。
無符號數(shù)也可用后綴表示,整型常數(shù)的無符號數(shù)的后綴為“U”或“u”。
例如:358u、0x38Au、235Lu均為無符號數(shù)。
前綴、后綴可同時使用以表示各種類型的數(shù)。如0XA5Lu表示十六進制無符號長整數(shù)A5,其十進制為165。
整型變量可分為int、short int、long int和unsigned int、unsigned short、unsigned long等類別,那么常量是否也有這些類別?在將一個整型常量賦值給上述幾種類別的整型變量時如何做到類型匹配?
請注意以下幾點:
(1)一個整數(shù),如果其值在-32768~32767范圍內(nèi),認(rèn)為它是short int型,它可以賦值給short int型、int型和long int型變量。
(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483648~2147483647范圍內(nèi),則認(rèn)為它是長整型。可以將它賦值給int型和long int型變量。
(3)如果所用的C語言版本分配給int型與long int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它們表示范圍相同,因此一個int型常量同時也是一個long int型常量,可以賦給int型或long int型變量。
(4)一個整型常量后面加一個字母u或U,認(rèn)為是unsigned int型,如12345u在內(nèi)存中按unsigned int規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。
(5)在一個整型常量后面加一個字母l或L,則認(rèn)為是long int型常量,例如1231、432L、0L等,往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為long int型,則要求實參也為long int型。
- DBA攻堅指南:左手Oracle,右手MySQL
- Python深度學(xué)習(xí)
- Web交互界面設(shè)計與制作(微課版)
- Java設(shè)計模式及實踐
- Hands-On Microservices with Kotlin
- Java EE核心技術(shù)與應(yīng)用
- OpenCV with Python By Example
- OpenMP核心技術(shù)指南
- 智能手機故障檢測與維修從入門到精通
- Mastering JavaScript
- 征服C指針(第2版)
- Flutter之旅
- C語言從入門到精通(微視頻精編版)
- Hands-On Machine Learning with ML.NET
- 深入解析Java虛擬機HotSpot