【学习笔记】【C语言】类型说明符
1. short和long
1> short和long可以提供不同長度的整型數,也就是可以改變整型數的取值范圍。在64bit編譯器環境下,int占用4個字節(32bit),取值范圍是-231~231-1;short占用2個字節(16bit),取值范圍是-215~215-1;long占用8個字節(64bit),取值范圍是-263~263-1
2> 總結一下:在64位編譯器環境下,short占2個字節(16位),int占4個字節(32位),long占8個字節(64位)。因此,如果使用的整數不是很大的話,可以使用short代替int,這樣的話,更節省內存開銷。
3> 世界上的編譯器林林總總,不同編譯器環境下,int、short、long的取值范圍和占用的長度又是不一樣的。比如在16bit編譯器環境下,long只占用4個字節。不過幸運的是,ANSI \ ISO制定了以下規則:
??? short跟int至少為16位(2字節)
??? long至少為32位(4字節)
??? short的長度不能大于int,int的長度不能大于long
??? char一定為為8位(1字節),畢竟char是我們編程能用的最小數據類型
4> 可以連續使用2個long,也就是long long。一般來說,long long的范圍是不小于long的,比如在32bit編譯器環境下,long long占用8個字節,long占用4個字節。不過在64bit編譯器環境下,long long跟long是一樣的,都占用8個字節。
5> 還有一點要明確的是:short int等價于short,long int等價于long,long long int等價于long long
?
2. signed和unsigned
1> 首先要明確的:signed int等價于signed,unsigned int等價于unsigned
2> signed和unsigned的區別就是它們的最高位是否要當做符號位,并不會像short和long那樣改變數據的長度,即所占的字節數。
??? signed:表示有符號,也就是說最高位要當做符號位,所以包括正數、負數和0。其實int的最高位本來就是符號位,已經包括了正負數和0了,因此signed和int是一樣的,signed等價于signed int,也等價于int。signed的取值范圍是-231 ~ 231 - 1
??? unsigned:表示無符號,也就是說最高位并不當做符號位,所以不包括負數。在64bit編譯器環境下面,int占用4個字節(32bit),因此unsigned的取值范圍是:0000 0000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 1111 1111,也就是0 ~ 232 – 1
?
3.代碼
?
1 #include <stdio.h> 2 /* 3 int 4個字節 %d 4 short 2個字節 %d 5 long 8個字節 %ld 6 long long 8個字節 %lld 7 8 9 signed 10 unsigned %u 11 */ 12 int main() 13 { 14 // 0000 0000 0000 0000 0000 0000 0000 0000 15 // 2的31次方-1 16 // 2的32次方-1 17 int num; 18 19 /* 20 signed和unsigned的區別: 21 signed 最高位要當做符號位 22 unsigned 最高位不要當做符號位 23 */ 24 // signed == signed int 25 // signed 有符號:正數、0、負數 26 signed int a = 10; 27 signed a2 = 10; 28 29 // unsigned int == unsigned 30 // unsigned 無符號:0、正數 31 unsigned int b = 10; 32 unsigned b2 = 10; 33 34 long unsigned int c = 34343; 35 long unsigned c2 = 423432; 36 37 short unsigned int d = 4343; 38 short unsigned d2 = 43243; 39 40 short signed int e = 54354; 41 short signed e2 = 434; 42 43 44 45 46 return 0; 47 } 48 49 void longAndShort() 50 { 51 // long == long int 52 long int a = 100645654654645645l; 53 long a2 = 100645654654645645l; 54 55 // long long int == long long 56 long long int c = 100645654654645645ll; 57 long long c2 = 4535435435435ll; 58 59 // short == short int 60 short int d = 5454; 61 short d2 = 43434; 62 63 //printf("%lld\n", c); 64 65 int s = sizeof(long long int); 66 printf("%d\n", s); 67 }?
轉載于:https://www.cnblogs.com/dssf/p/4587310.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【学习笔记】【C语言】类型说明符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt5.6下载
- 下一篇: poj1284:欧拉函数+原根