奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

C語(yǔ)言中的正負(fù)數(shù)以及數(shù)值溢出

時(shí)間:2025-04-23 00:15:48 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言中的正負(fù)數(shù)以及數(shù)值溢出

  在數(shù)學(xué)中,數(shù)字有正負(fù)之分。在C語(yǔ)言中也是一樣。下面是小編分享的C語(yǔ)言中的正負(fù)數(shù)以及數(shù)值溢出,歡迎大家參考!

  在C語(yǔ)言中,short、int、long 都可以帶上符號(hào),例如:

  short a = -10; //負(fù)數(shù)int b = +10; //正數(shù)long c = (-9) + (+12); //負(fù)數(shù)和正數(shù)相加

  如果不帶正負(fù)號(hào),默認(rèn)就是正數(shù)。

  符號(hào)也要在內(nèi)存中體現(xiàn)出來(lái)。符號(hào)只有正負(fù)兩種情況,用1位就足以表示,這1位就是最高位。以 int 為例,它占用32位的內(nèi)存,0~30位表示數(shù)值,31 位表示正負(fù)號(hào)。如下圖所示:

  在編程語(yǔ)言中,計(jì)數(shù)往往是從0開始,例如字符串 "abc123",我們稱第 0 個(gè)字符是 a,第 1 個(gè)字符是 b,第 5 個(gè)字符是 3。這和我們平時(shí)從 1 開始計(jì)數(shù)的習(xí)慣不一樣,大家要慢慢適應(yīng),培養(yǎng)編程思維。

  在符號(hào)位中,用0表示正數(shù),用1表示負(fù)數(shù)。例如 int 類型的 -10、+16 在內(nèi)存中的表示如下:

  如果不希望設(shè)置符號(hào)位,可以在數(shù)據(jù)類型前面加 unsigned,如下所示:

  unsigned short a = 12;unsigned int b = 1002;unsigned long c = 9892320;

  這樣,short、int、long 中就沒(méi)有符號(hào)位了,所有的位都用來(lái)表示數(shù)值。也就意味著,使用了 unsigned 只能表示正數(shù),不能表示負(fù)數(shù)了。

  如果是unsigned int,那么可以省略 int ,只寫 unsigned,例如:

  unsigned n = 100;

  它等價(jià)于:

  unsigned int n = 100;

  輸出無(wú)符號(hào)數(shù)使用%u,代碼如下:

  #include #include int main(){ int a1 = 1234, a2 = -1234; unsigned int b1 = 5678, b2 = -5678; printf("a1=%d, a1(u)=%u ", a1, a1); printf("a2=%d, a2(u)=%u ", a2, a2); printf("b1=%d, b1(u)=%u ", b1, b1); printf("b2=%d, b2(u)=%u ", b2, b2); return 0;}

  輸出結(jié)果:

  a1=1234, a1(u)=1234

  a2=-1234, a2(u)=4294966062

  b1=5678, b1(u)=5678

  b2=-5678, b2(u)=4294961618

  可以發(fā)現(xiàn),無(wú)論變量聲明為有符號(hào)數(shù)還是無(wú)符號(hào)數(shù),只有當(dāng)以 %u 格式輸出時(shí),才會(huì)作為無(wú)符號(hào)數(shù)處理;如果聲明為 unsigned 卻以 d% 輸出,那么也是有符號(hào)數(shù)。

  a2、b2 的輸出值之所以很奇怪,與它們?cè)趦?nèi)存中的存儲(chǔ)形式有關(guān),我們將在《C語(yǔ)言整數(shù)在內(nèi)存中是如何存儲(chǔ)的》一節(jié)詳細(xì)介紹。

  最后需要說(shuō)明的是:不管是否有符號(hào),%o、%x、%X、%#o、%#x、%#X 都是以無(wú)符號(hào)形式輸出,讀者可以親自測(cè)試。

  取值范圍和數(shù)據(jù)溢出

  short、int、long 占用的字節(jié)數(shù)不同,所能表示的數(shù)值范圍也不同。以32位平臺(tái)為例,下面是它們的取值范圍:

數(shù)據(jù)類型所占字節(jié)數(shù)取值范圍
short2-32768~32767,即 -215~(215-1)
unsigned short20~65535,即 0~(216-1)
int4-2147483648~2147483647,即 -231~(231-1)
unsigned int40~4294967295,即0~(232-1)
long4-2147483648~2147483647,即 -231~(231-1)
unsigned long40~4294967295,即0~(232-1)

  當(dāng)數(shù)值過(guò)大或過(guò)小時(shí),有限的幾個(gè)字節(jié)就不能表示,就會(huì)發(fā)生溢出。發(fā)生溢出時(shí),最高位會(huì)被截去。請(qǐng)看下面的例子:

  #include int main(){ unsigned int a = 0x100000000; int b = 0xffffffff; printf("a=%u, b=%d ", a, b); return 0;}

  運(yùn)行結(jié)果:

  a=0, b=-1

  變量 a 為 int 類型,占用4個(gè)字節(jié)(32位),能表示的最大值為 0xFFFFFFFF,而 0x100000000 = 0xFFFFFFFF + 1,占用33位,已超出 a 所能表示的最大值,會(huì)發(fā)生溢出,最高位被截去,剩下的32位都是0。也就是說(shuō),在 a 被輸出前,其值已經(jīng)變成了 0。

【C語(yǔ)言中的正負(fù)數(shù)以及數(shù)值溢出】相關(guān)文章:

深入解析C語(yǔ)言中的數(shù)值與真假08-14

C語(yǔ)言中的整數(shù)06-16

C語(yǔ)言中的字符07-18

C語(yǔ)言中volatile的含義08-14

c語(yǔ)言中怎么畫圖11-06

c語(yǔ)言中bit的用法11-01

C語(yǔ)言中assert用法09-22

C語(yǔ)言中的指針解讀11-01

c語(yǔ)言中什么是變量08-22

主站蜘蛛池模板: 新巴尔虎右旗| 建宁县| 抚州市| 垣曲县| 靖西县| 镶黄旗| 上高县| 白银市| 元江| 阳谷县| 玉环县| 元氏县| 鹤壁市| 方正县| 墨江| 梁河县| 商南县| 韶关市| 玉溪市| 枣强县| 德保县| 双城市| 保康县| 达日县| 车致| 全椒县| 永顺县| 安仁县| 化德县| 宿松县| 安义县| 福建省| 太白县| 通榆县| 银川市| 万宁市| 巨野县| 巴彦淖尔市| 宣武区| 禹州市| 正安县|