日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言中的整数

發(fā)布時(shí)間:2025/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中的整数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

整數(shù)是編程中常用的一種數(shù)據(jù),C語(yǔ)言通常使用int來(lái)定義整數(shù)(int 是 integer 的簡(jiǎn)寫(xiě))。

現(xiàn)代操作系統(tǒng)中,int 一般占用 4 個(gè)字節(jié)(Byte)的內(nèi)存,共計(jì) 32 位(Bit)。如果不考慮正負(fù)數(shù),當(dāng)所有的位都為 1 時(shí)它的值最大,為 232-1 = 4,294,967,295 ≈ 43億,這是一個(gè)很大的數(shù),實(shí)際開(kāi)發(fā)中很少用到,而諸如 1、99、12098 等較小的數(shù)使用頻率反而較高。

使用 4 個(gè)字節(jié)保存較小的整數(shù)綽綽有余,會(huì)空閑出兩三個(gè)字節(jié)來(lái),這些字節(jié)就白白浪費(fèi)掉了,不能再被其他數(shù)據(jù)使用。

我們要讓整數(shù)占用更多的內(nèi)存,用來(lái)表示更大的值,比如占用 6 個(gè)字節(jié)或者 8 個(gè)字節(jié)。

讓整數(shù)占用更少的內(nèi)存可以在 int 前邊加 short,讓整數(shù)占用更多的內(nèi)存可以在 int 前邊加 long。

示例

short int a = 10; short int b, c = 99; long int m = 12123; long int n, p = 562131;

這樣 a、b、c 只占用 2 個(gè)字節(jié)的內(nèi)存,而 m、n、p 可能會(huì)占用 8 個(gè)字節(jié)的內(nèi)存。

我們也可以將 int 省略,只寫(xiě) short 和 long,如下所示:

short a = 10; short b, c = 99; long m = 102023; long n, p = 562131;

這樣的寫(xiě)法更加簡(jiǎn)潔高效。

int 是基本的整數(shù)類(lèi)型,short 和 long 是在 int 的基礎(chǔ)上進(jìn)行的擴(kuò)展,short 可以節(jié)省內(nèi)存,long 可以容納更大的值。

short、int、long 是C語(yǔ)言中常見(jiàn)的整數(shù)類(lèi)型,其中 int 稱(chēng)為整型,short 稱(chēng)為短整型,long 稱(chēng)為長(zhǎng)整型。

整型的長(zhǎng)度

我們?cè)诿枋鰏hort、int、long 類(lèi)型的長(zhǎng)度時(shí),只對(duì) short 使用肯定的說(shuō)法,而對(duì) int、long 使用了“一般”或者“可能”等不確定的說(shuō)法。這種描述的言外之意是,只有 short 的長(zhǎng)度是確定的,是兩個(gè)字節(jié),而 int 和 long 的長(zhǎng)度無(wú)法確定,在不同的環(huán)境下有不同的表現(xiàn)。
一種數(shù)據(jù)類(lèi)型占用的字節(jié)數(shù),稱(chēng)為該數(shù)據(jù)類(lèi)型的長(zhǎng)度。例如,short 占用 2 個(gè)字節(jié)的內(nèi)存,那么它的長(zhǎng)度就是 2。

C語(yǔ)言并沒(méi)有嚴(yán)格規(guī)定 short、int、long 的長(zhǎng)度,只做了寬泛的限制:

short 至少占用 2 個(gè)字節(jié)。int 建議為一個(gè)機(jī)器字長(zhǎng)。32 位環(huán)境下機(jī)器字長(zhǎng)為 4 字節(jié),64 位環(huán)境下機(jī)器字長(zhǎng)為 8 字節(jié)。short 的長(zhǎng)度不能大于 int,long 的長(zhǎng)度不能小于 int。

它們的長(zhǎng)度(所占字節(jié)數(shù))關(guān)系為:

2shortintlong

short 并不一定真的”短“,long 也并不一定真的”長(zhǎng)“,它們有可能和 int 占用相同的字節(jié)數(shù)。

在 16 位環(huán)境下,short 的長(zhǎng)度為 2 個(gè)字節(jié),int 也為 2 個(gè)字節(jié),long 為 4 個(gè)字節(jié)。

對(duì)于 32 位的 Windows、Linux 和 Mac OS,short 的長(zhǎng)度為 2 個(gè)字節(jié),int 為 4 個(gè)字節(jié),long 也為 4 個(gè)字節(jié)。

在 64 位環(huán)境下,不同的操作系統(tǒng)會(huì)有不同的結(jié)果,如下圖所示:

在PC系統(tǒng)為 Win XP、Win 7、Win 8、Win 10、Mac OS、Linux,中,short 和 int 的長(zhǎng)度都是固定的,分別為 2 和 4,大家可以放心使用,只有 long 的長(zhǎng)度在 Win64 和類(lèi) Unix 系統(tǒng)下會(huì)有所不同,使用時(shí)要注意移植性。

sizeof 操作符

獲取某個(gè)數(shù)據(jù)類(lèi)型的長(zhǎng)度可以使用 sizeof 操作符。

示例

#include <stdio.h> int main() {short a = 10;int b = 100;int short_length = sizeof a;int int_length = sizeof(b);int long_length = sizeof(long);int char_length = sizeof(char);printf("short=%d, int=%d, long=%d, char=%d\n", short_length, int_length, long_length, char_length);return 0; }

在 32 位環(huán)境以及 Win64 環(huán)境下的運(yùn)行結(jié)果為:

short=2, int=4, long=4, char=1

在 64 位 Linux 和 Mac OS 下的運(yùn)行結(jié)果為:

short=2, int=4, long=8, char=1

sizeof 用來(lái)獲取某個(gè)數(shù)據(jù)類(lèi)型或變量所占用的字節(jié)數(shù),如果后面跟的是變量名稱(chēng),那么可以省略( ),如果跟的是數(shù)據(jù)類(lèi)型,就必須帶上( )。

注意: sizeof 是C語(yǔ)言中的操作符,不是函數(shù),所以可以不帶( )。

使用不同的格式控制符可以輸出不同類(lèi)型的整數(shù)

%hd用來(lái)輸出 short int 類(lèi)型,hd 是 short decimal 的簡(jiǎn)寫(xiě);%d用來(lái)輸出 int 類(lèi)型,d 是 decimal 的簡(jiǎn)寫(xiě);%ld用來(lái)輸出 long int 類(lèi)型,ld 是 long decimal 的簡(jiǎn)寫(xiě)。

不同整型的輸出:

#include <stdio.h> int main() {short a = 10;int b = 99;long c = 9437;printf("a=%hd, b=%d, c=%ld\n", a, b, c);return 0; }

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

a=10, b=99, c=9437

注意:要將格式控制符和數(shù)據(jù)類(lèi)型嚴(yán)格對(duì)應(yīng)起來(lái),養(yǎng)成良好的編程習(xí)慣。當(dāng)然,如果你不嚴(yán)格對(duì)應(yīng),一般也不會(huì)導(dǎo)致錯(cuò)誤。

使用%d輸出所有的整數(shù)類(lèi)型

#include <stdio.h> int main() {short a = 10;int b = 99;long c = 9437;printf("a=%d, b=%d, c=%d\n", a, b, c);return 0; }

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

a=10, b=99, c=9437

當(dāng)使用%d輸出 short,或者使用%ld輸出 short、int 時(shí),不管值有多大,都不會(huì)發(fā)生錯(cuò)誤,因?yàn)楦袷娇刂品銐蛉菁{這些值。

當(dāng)使用%hd輸出 int、long,或者使用%d輸出 long 時(shí),如果要輸出的值比較小(如上所示情況),一般也不會(huì)發(fā)生錯(cuò)誤,如果要輸出的值比較大,就很有可能發(fā)生錯(cuò)誤,例如:

#include <stdio.h> int main() {int m = 306587;long n = 28166459852;printf("m=%hd, n=%hd\n", m, n);printf("n=%d\n", n);return 0; }

在 64 位 Linux 和 Mac OS 下(long 的長(zhǎng)度為 8)的運(yùn)行結(jié)果為:

m=-21093, n=4556 n=-1898311220

輸出結(jié)果錯(cuò)誤,這是因?yàn)?hd容納不下 m 和 n 的值,%d也容納不下 n 的值。

我們?cè)诰帉?xiě)程序的時(shí)候要特別注意,當(dāng)格式控制符和數(shù)據(jù)類(lèi)型不匹配時(shí),編譯器會(huì)給出警告,提示程序可能會(huì)存在風(fēng)險(xiǎn)。

編譯器的警告是分等級(jí)的,不同程度的風(fēng)險(xiǎn)被劃分成了不同的警告等級(jí),而使用%d輸出 short 和 long 類(lèi)型的風(fēng)險(xiǎn)較低,如果你的編譯器設(shè)置只對(duì)較高風(fēng)險(xiǎn)的操作發(fā)出警告,那么此處你就看不到警告信息。

如果感覺(jué)不錯(cuò)的話(huà)請(qǐng)點(diǎn)贊!!!

總結(jié)

以上是生活随笔為你收集整理的C语言中的整数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。