新聞中心
目錄
創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為煙臺(tái)企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),煙臺(tái)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。一、數(shù)據(jù)類型
1.基本類型
2.sizeof運(yùn)算符
3.signed和unsigned?
二、取值范圍
1.比特位
2.字節(jié)
3.符號(hào)位
4.補(bǔ)碼
5.基本數(shù)據(jù)類型的取值范圍
一、數(shù)據(jù)類型
(1)整數(shù)類型
- short int
- int
- long int
- long long int
(2)浮點(diǎn)數(shù)類型
- float
- double
- long double
(3)字符類型
- char
(4)布爾類型
- _Bool
(5)枚舉類型
- enum
sizeof 運(yùn)算符用于獲得數(shù)據(jù)類型或表達(dá)式的長(zhǎng)度
如:-sizeof(object);? ? ? ? ?? ? ?//sizeof(對(duì)象)
?-sizeof(type_name);? ? ? //sizeof(類型)
?-sizeof object;? ? ? ? ? ? ? ?//sizeof 對(duì)象
代碼舉例:
#includeint main()
{
int i;
char j;
float k;
i = 123;
j = 'C';
k = 3.14;
printf("size of int is %d\n",sizeof(int));
printf("size of i is %d\n",sizeof(i));
printf("size of char is %d\n",sizeof(char));
printf("size of j is %d\n",sizeof j);
printf("size of float is %d\n",sizeof(float));
printf("size of k is %d\n",sizeof k);
return 0;
}
代碼運(yùn)行結(jié)果:
分別打印各類型所占字節(jié):
#includeint main()
{
printf("int = %d\n",sizeof(int));
printf("short int = %d\n",sizeof(short));
printf("long int = %d\n",sizeof(long));
printf("long long int = %d\n",sizeof(long long));
printf("char = %d\n",sizeof(char));
printf("_Bool = %d\n",sizeof(_Bool));
printf("float = %d\n",sizeof(float));
printf("double = %d\n",sizeof(double));
printf("long double = %d\n",sizeof(long double));
return 0;
}
運(yùn)行結(jié)果(設(shè)備不同,結(jié)果可能也不同):
? signed:代表有符號(hào)的,第一個(gè)位代表正負(fù),剩余的代表大小,例如:signed int 大小區(qū)間為-128-127。(默認(rèn)為signed)
? unsigned:代表無(wú)符號(hào)的,所有的位都為大小,沒(méi)有負(fù)數(shù),例如:unsigned int 大小區(qū)間為:0-255。
- [signed] short [int]
- unsigned short [int]
- [signed] int
- unsigned int
- [signed] long [int]
- unsigned long [int]
- [signed] long long [int]
- unsigned long long [int]
代碼舉例:
#includeint main()
{
short i;
unsigned short j;
i = -1;
j = -1;
printf("%d\n",i);//d為打印帶符號(hào)的
printf("%u\n",j);//u為打印不帶符號(hào)的
return 0;
}
運(yùn)行結(jié)果:
可見(jiàn),打印 j 時(shí),結(jié)果并不是我們期望出現(xiàn)的-1,而是65535,這與數(shù)據(jù)類型的取值范圍有關(guān)。
二、基本數(shù)據(jù)類型的取值范圍 1.比特位CPU能讀懂的最小單位是:比特位,bit,b。每個(gè)比特位只能存放二進(jìn)制數(shù),即0和1.
2.字節(jié)內(nèi)存機(jī)構(gòu)最小尋址單位:字節(jié),Byte,B
注:1Byte = 8 bit
一個(gè)字節(jié)能存放的大的數(shù)()用二進(jìn)制表示為:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
該數(shù)轉(zhuǎn)化為十進(jìn)制為:2147483647
補(bǔ)充:進(jìn)制
打印,代碼如下:
# include#includeint main()
{
unsigned int result = pow(2,32) - 1;
printf("result = %u\n",result);
return 0;
}
運(yùn)行結(jié)果:
注意:若不加“unsigned”,則輸出結(jié)果為2147483647.這是因?yàn)槟J(rèn)情況下int是signed類型的,也就是說(shuō)左邊第一位是符號(hào)位,所以必須加“unsigned”來(lái)使其變?yōu)橐粋€(gè)無(wú)符號(hào)的整型變量,使得32位都用來(lái)存放數(shù)值。
3.符號(hào)位- 存放signed類型的存儲(chǔ)單元中,左邊第一位表示符號(hào)位。如果該位為0,表示該整數(shù)是一個(gè)正數(shù);如果該位為1,表示該整數(shù)是一個(gè)負(fù)數(shù)。
- 一個(gè)32位的整型變量,除去左邊第一位符號(hào)位,剩下表示值的只有31個(gè)比特位。
- 正數(shù)的補(bǔ)碼是該數(shù)的二進(jìn)制形式。
- 負(fù)數(shù)的補(bǔ)碼需要通過(guò)以下幾步獲得:
(1)先取得該數(shù)的絕對(duì)值的二進(jìn)制形式
(2)再將第1步的值按位取反(除符號(hào)位)
(3)最后將第2步的值加1
例如:
數(shù)據(jù)類型 | 字節(jié)數(shù) | 取值范圍 |
char | 1 | -128~127 |
unsigned char2 | 1 | 0~255 |
short | 2 | -32768~32767 |
unsigned short | 2 | 0~65535 |
int | 4 | -2147483648~2147483647 |
unsigned int | 4 | 0~4294967295 |
long | 4 | -2147483648~2147483647 |
unsigned long | 4 | 0~4294967295 |
long long | 8 | -9223372036854775808~9223372036854775807 |
unsigned long long | 8 | 0~18446744073709551615 |
數(shù)據(jù)類型 | 字節(jié)數(shù) | 取值范圍(絕對(duì)值) |
float | 4 | 1.17549*10^-38~3.40282*10^38 |
double | 8 | 2.22507*10^-308~1.79769*10^308 |
long double | 12 | 2.22507*10^-308~1.79769*10^308 |
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞名稱:C語(yǔ)言——數(shù)據(jù)類型、基本數(shù)據(jù)類型的取值范圍-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://www.dlmjj.cn/article/cecphs.html