c语言中short作用,详解C语言中整数(short,int,long)
在了解了進制轉換和C語言的整體架構、輸入方式之后,接下來我們要理解的是C語言當中的整數的概念和用法。下面課課家筆者就為大家介紹C語言中的整數(short,int,long)。
在我們編程的過程中整數是我們常用的一種數據,而在C語言中通常使用int來定義整數(int是integer的簡寫)。在當今操作系統中int一般占用4個字節內存,共計32位(Bit)。如果我們不考慮正負數,當所有的位都為1時它的值最大,為232-1=4,294,967,295≈43億,這是一個很大的數,實際開發中很少用到,而諸如1、99、12098等較小的數使用頻率反而較高。使用4個字節保存較小的整數綽綽有余,會空閑出兩三個字節來,這些字節就白白浪費掉了,不能再被其他數據使用。在C語言被發明的早期或者在單片機和嵌入式中,內存都是非常稀缺的資源,因此所有的程序都在盡力節省內存。反過來說43億雖然已經很大,但要表示全球人口數量還是不夠,必須要讓整數占用更多的內存,才能表示更大的值。讓整數占用更少的內存可以在int前邊加short,讓整數占用更多的內存可以在int前邊加long,下面筆者舉個簡單的例子:
short int a = 10;
short int b,c = 99;
long int m = 102023;
long int n,p = 562131;
這樣a、b、c只占用2個字節的內存,而m、n、p可能占用8個字節的內存。當然我們也可以將int省略,只寫short和long,如下所示:
short a = 10;
short b,c = 99;
long m = 102023;
long n,p = 562131;
這樣的寫法更加簡潔,在實際開發中常常用到。總結起來,C語言中共有三種整數類型,分別是short、int和long。int稱為整型,short稱為短整型,long稱為長整型。
◎整數的長度
在C語言中并沒有嚴格規定short、int、long所占用的字節數,只是做了寬泛的限制:
①short至少占用2個字節。
②int建議為一個機器字長。32位環境下機器字長為4字節,64位環境下機器字長為8字節。
③short的長度不能大于int,long的長度不能小于int。
總結起來,它們的長度(所占字節數)關系為:short<=int<=long。這說明short并不一定真的”短“,long也并不一定真的”長“,它們有可能和int占用相同的字節數。在16位環境下,short為2個字節,int為2個字節,long為4個字節。16位環境多用于單片機和低級嵌入式系統,在PC和服務器上基本都看不到了。對于32位的Windows、Linux和OSX,short為2個字節,int為4個字節,long也為4個字節。PC和服務器上的32位系統占有率也在慢慢下降,嵌入式系統使用32位越來越多。在64位環境下,不同的操作系統會有不同的結果,具體如下所示(長度以字節計):
①Windows 64位系統: short為2字節、 int為4字節, long為4字節。
②類Unix系統(包括Unix、Linux、OSX、BSD、Solaris等):?short為2字節、 int為4字節, long為8字節。
目前我們使用較多的PC系統為WinXP、Win7、Win8、Win10、MacOSX、Linux,short和int的長度都是固定的,分別為2和4,另外long的長度在Windows 64位和類Unix系統下會有所不同,我們使用時要注意移植性。
為了獲取某個數據類型的長度我們可以使用sizeof操作符,具體如下所示:
#include
int main()
{
short a = 10;
int b = 100;
long c = 1000;
char d = 'X';
int a_length = sizeof a;
int b_length = sizeof(int);
printf("a=%d,b=%d,c=%d,d=%d\\n",a_length,b_length,sizeof(c),sizeof(char));
return 0;
}
在Win7下的運行結果為:
a=2,b=4,c=4,d=1
sizeof用來獲取某個數據類型或變量所占用的字節數,如果后面跟的是變量名稱,那么可以省略(),如果跟的是數據類型,就必須帶上()。需要注意的是,sizeof是C語言中的操作符,不是函數,所以可以不帶()。
◎不同進制的整數
C語言中的整數除了可以使用十進制,還可以使用八進制和十六進制。
①八進制。八進制由0~7八個數字組成,使用時必須以0開頭(注意是數字0,不是字母o),比如:
//合法的八進制數
int a = 015;//十進制為13
int b = -0101;//十進制為-65
int c = 0177777;//十進制為65535
非法的八進制
int m = 256;//無前綴0,相當于十進制
int n = 03A2;//A不是有效數字
②十六進制。十六進制由數字0~9、字母A~F或a~f組成,使用時必須以0x或0X(不區分大小寫)開頭,比如:
//合法的十六進制
int a = 0X2A;//十進制為42
int b = -0XA0;//十進制為-160
int c = 0xffff;//十進制為65535
//非法的十六進制
int m = 5A;//無前綴0X
int n = 0X3H;//H不是有效數字
③十進制。十進制由0~9十個數字組成,沒有任何前綴,和我們平時的書寫格式一樣。
PS:C語言中只能使用八進制、十進制和十六進制,不能直接使用二進制,它沒有特定的前綴。
◎各種整數的輸出
在使用printf輸出整數時,不同的控制字符會有不同的輸出格式。
①輸出int使用%d,輸出short使用%hd,輸出long使用%ld。具體為下面的例子:
#include
int main()
{
short a = 100;
int b = 010;
long c = 0XFFFF;
printf("a=%hd,b=%d,c=%ld\\n",a,b,c);
return 0;
}
運行結果:
a=100,b=8,c=65535
②輸出十進制使用%d,輸出八進制使用%o(注意是字母o,不是數字0),輸出十六進制使用%x或%X。如果我們希望帶上前綴,可以通過添加#,比如%#d、%#o、%#x、%#X。請看下面的例子:
#include
#include
int main()
{
int a = 100,b = 0270,c = 0X2F;
printf("a(d)=%d,d(#d)=%#d\\n",a,a);
printf("a(o)=%o,d(#o)=%#o\\n",b,b);
printf("c(x)=%x,c(#x)=%#x,c(X)=%X,c(#X)=%#X\\n",c,c,c,c);
system("pause");
return 0;
}
運行結果:
a(d)=100,d(#d)=100
a(o)=270,d(#o)=0270
c(x)=2f,c(#x)=0x2f,c(X)=2F,c(#X)=0X2F
此時需要我們注意的地方是,由于十進制數沒有前綴,所以%d和%#d的輸出結果一樣。最后給大家看下任意一整數示例。
本次詳解C語言中整數(short,int,long)的教程到此暫告一段落,以后有補充的筆者會繼續補充,希望這個教程對大家學習C語言起到一定的幫助。
總結
以上是生活随笔為你收集整理的c语言中short作用,详解C语言中整数(short,int,long)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过xml方式根据word模板导出wor
- 下一篇: 全球与中国线锯钢线市场深度研究分析报告