国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【學習筆記】【C語言】類型說明符

2019-11-14 18:50:15
字體:
來源:轉載
供稿:網友

1. short和long

clip_image002

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  signed10  unsigned  %u11  */12 int main()13 {14     // 0000 0000 0000 0000 0000 0000 0000 000015     // 2的31次方-116     // 2的32次方-117     int num;18     19     /*20      signed和unsigned的區別:21       signed 最高位要當做符號位22      unsigned 最高位不要當做符號位23     */24     // signed == signed int25     // signed 有符號:正數、0、負數26     signed int a = 10;27     signed a2 = 10;28     29     // unsigned int == unsigned30     // 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 int52     long int a = 100645654654645645l;53     long a2 = 100645654654645645l;54     55     // long long int == long long56     long long int c = 100645654654645645ll;57     long long c2 = 4535435435435ll;58     59     // short == short int60     short int d = 5454;61     short d2 = 43434;62     63     //64     65     int s = sizeof(long long int);66     printf("%d/n", s);67 }

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 繁峙县| 新龙县| 大庆市| 滕州市| 崇礼县| 深水埗区| 鹤岗市| 闻喜县| 阿拉尔市| 加查县| 广平县| 宁河县| 乌海市| 东城区| 古交市| 中江县| 奉化市| 若羌县| 桐柏县| 屯留县| 马鞍山市| 宜兴市| 定日县| 庆阳市| 正镶白旗| 辽阳县| 霍山县| 焉耆| 曲靖市| 平泉县| 教育| 阿合奇县| 托克逊县| 吴川市| 芜湖市| 玉山县| 普宁市| 台江县| 乌鲁木齐市| 平湖市|