一、概念
/*
類(lèi)型說(shuō)明符:
1.說(shuō)明長(zhǎng)度的 (它可以用于修改 類(lèi)型 所占用的存儲(chǔ)空間的大小)
short;
輸出 %hi hd // 2個(gè)字節(jié) == -2(15)~2(15)-1
long;
輸出 %li ld // (64位占8個(gè)字節(jié)) 32 位long 占用4個(gè)字節(jié) , long long 占用 8個(gè)字節(jié) == -2(63) ~ 2(63)-1
long long;
輸出 %lli %lld // 8個(gè)字節(jié) == -2(63) ~ 2(63)-1
用于說(shuō)明數(shù)據(jù)類(lèi)型, 一般情況下 和 int 配合使用
2.說(shuō)明符號(hào)位 (它可以用于修改符號(hào)位)
unsigned; (無(wú)符號(hào)) 輸出 %u . 取值 整數(shù) 和 零
signed; (有符號(hào)的) 取值 正數(shù) 和 零 以及 負(fù)數(shù)
如果給變量加上修飾符 signed 代表當(dāng)前變量的取值可以是 正數(shù) / 負(fù)數(shù) /零
如果給變量加上修飾符 signed 就代表把 二進(jìn)制的最高位作為符號(hào)位
而且默認(rèn)情況下所有變量都是有符號(hào)的(signed)
3.不同類(lèi)型的說(shuō)明符 可以混合使用
unsigned short
signed long
注意 : 相同類(lèi)型的 說(shuō)明符 不能同時(shí)在一起使用
*/
二躺盛、代碼
#include <stdio.h>
int main()
{
#pragma 1.說(shuō)明長(zhǎng)度的 (short、long彩库、long long)
// int == 4個(gè)字節(jié) = -2(31)~2(31)-1
// int num = 32;
int num = 12345678901; // -539222987
printf("num = %i\n",num);
// int == 4個(gè)字節(jié) , long int == 8個(gè)字節(jié) == -2(63) ~ 2(63)-1
long int num2 = 12345678901;
printf("num2 = %li\n",num2);
// long int = long
// 用%li 或者 %ld來(lái)輸出 long類(lèi)型的數(shù)據(jù)
// C語(yǔ)言不看怎么存, 只看怎么取
long num3 = 12345678901;
printf("num3 = %li\n",num3);
// long long
// 在64位編譯器, 基本沒(méi)區(qū)別, 但是在32位就有區(qū)別
// 32 位long 占用4個(gè)字節(jié) , long long 占用8個(gè)字節(jié)
// 注意 : 如果使用 long long 修飾變量, 那么輸出的時(shí)候 需要使用%lli 或者 lld
long long int num4 = 12345678901;
printf("num4 = %lli\n",num4);
printf("long long = %lli ,long = %li\n",sizeof(num4),sizeof(num3));
long long num5 = 12345678901;
printf("num5 = %lli\n",num5);
printf("---\n");
// int == 4個(gè)字節(jié) = -2(31)~2(31)-1
int value = 9; // 0000 1001
printf("value = %i\n",value);
// short int == 2個(gè)字節(jié) == -2(15)~2(15)-1
short int value1 = 9; // 0000 1001
printf("value1 = %i\n",value1);
// short int == short
// 如果要輸出 short int 類(lèi)型 ,可以使用%hi
short value2 = 9; // 0000 1001
printf("value2 = %hi\n",value2);
printf("short = %i, int = %i\n",sizeof(value1),sizeof(value));
printf("---\n");
#pragma 2.說(shuō)明符號(hào)位 (signed / unsigned)
// signed 有符號(hào)
// 如果給變量加上修飾符 signed 代表當(dāng)前變量的取值可以是 正數(shù) / 負(fù)數(shù) /零
// 如果給變量加上修飾符 signed 就代表把 二進(jìn)制的最高位作為符號(hào)位
// 而且默認(rèn)情況下所有變量都是有符號(hào)的(signed)
signed int temp = 9; // 正數(shù) / 負(fù)數(shù) / 零 int == -2(31)~2(31)-1
printf("temp = %i\n",temp);
// unsigned 代表無(wú)符號(hào), 無(wú)符號(hào)就代表當(dāng)前變量的取值可以是 正數(shù) / 零
// 如果給變量加上修飾符 unsigned , 就代表 "不"把二進(jìn)制的最高位作為符號(hào)位
// 如果想打印無(wú)符號(hào)的變量 ,只能用%u
// 注意 : 輸出格式 千萬(wàn)不要使用 %i 去輸出 因?yàn)?i是有符號(hào)的輸出
unsigned int temp2 = -12;
printf("temp = %u\n",temp2); // 4294967284
printf("---\n");
#pragma 3.不同類(lèi)型的說(shuō)明符 可以混合使用
unsigned long int lyh = 165; // 這個(gè)類(lèi)型 不能是負(fù)數(shù)(unsigned) 并且是一個(gè)8字節(jié)(long)的整型(int)
printf("lyh %lu\n",lyh);
signed short int lyh1 = 23;
printf("lyh1 %hi\n",lyh1);
// 注意 : 相同類(lèi)型的 說(shuō)明符 不能同時(shí)在一起使用
// short long int lyh2 = 22; // 錯(cuò)誤寫(xiě)法 相同類(lèi)型不能混合 short long
// signed unsigned int lyh3 = 992; // 錯(cuò)誤寫(xiě)法 相同類(lèi)型不能混合 signed unsigned
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者