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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言中的整数

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

整數(shù)是編程中常用的一種數(shù)據(jù),C語言通常使用int來定義整數(shù)(int 是 integer 的簡寫)。

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

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

我們要讓整數(shù)占用更多的內(nèi)存,用來表示更大的值,比如占用 6 個字節(jié)或者 8 個字節(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 個字節(jié)的內(nèi)存,而 m、n、p 可能會占用 8 個字節(jié)的內(nèi)存。

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

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

這樣的寫法更加簡潔高效。

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

short、int、long 是C語言中常見的整數(shù)類型,其中 int 稱為整型,short 稱為短整型,long 稱為長整型。

整型的長度

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

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

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

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

2shortintlong

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

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

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

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

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

sizeof 操作符

獲取某個數(shù)據(jù)類型的長度可以使用 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 用來獲取某個數(shù)據(jù)類型或變量所占用的字節(jié)數(shù),如果后面跟的是變量名稱,那么可以省略( ),如果跟的是數(shù)據(jù)類型,就必須帶上( )。

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

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

%hd用來輸出 short int 類型,hd 是 short decimal 的簡寫;%d用來輸出 int 類型,d 是 decimal 的簡寫;%ld用來輸出 long int 類型,ld 是 long decimal 的簡寫。

不同整型的輸出:

#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ù)類型嚴(yán)格對應(yīng)起來,養(yǎng)成良好的編程習(xí)慣。當(dāng)然,如果你不嚴(yán)格對應(yīng),一般也不會導(dǎo)致錯誤。

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

#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 時,不管值有多大,都不會發(fā)生錯誤,因?yàn)楦袷娇刂品銐蛉菁{這些值。

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

#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 的長度為 8)的運(yùn)行結(jié)果為:

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

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

我們在編寫程序的時候要特別注意,當(dāng)格式控制符和數(shù)據(jù)類型不匹配時,編譯器會給出警告,提示程序可能會存在風(fēng)險。

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

如果感覺不錯的話請點(diǎn)贊!!!

總結(jié)

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

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