一個(gè)程序是由算法和數(shù)值構(gòu)成的,C語(yǔ)言當(dāng)中用來(lái)表示數(shù)據(jù)的稱之為變量和常量,變量指的是能夠變化的值,常量就是不可變的,如:1、2、3、A、B、C等等
C語(yǔ)言為了方便我們更好地使用數(shù)據(jù),光整數(shù)就分了四種變量類型,分別是:short,long,long long,unsignede修飾符

編程語(yǔ)言當(dāng)中用來(lái)表示基本單位的一個(gè)量(存儲(chǔ)單位),最小的叫位(bit)內(nèi)存一次性寫入和讀取8bit的數(shù)據(jù),在C語(yǔ)言中,使用的比較少,一般C語(yǔ)言當(dāng)中我們用刀最小的單位叫字節(jié)(Byte),1Byte=8bit,隨著計(jì)算機(jī)的發(fā)展,字節(jié)也越來(lái)越小,于是出現(xiàn)了字(word)和雙字(dword),一個(gè)字等于4Byte,一個(gè)雙字等于8Byte?,F(xiàn)在雙字已經(jīng)成為計(jì)算機(jī)中較為基礎(chǔ)的數(shù)量單位,因?yàn)槭熘恼麛?shù)很多都是用雙字來(lái)代表,也就是32位。
想要在計(jì)算機(jī)當(dāng)中存儲(chǔ)一個(gè)數(shù)值:
一、在哪個(gè)內(nèi)存地址當(dāng)中進(jìn)行存儲(chǔ)
二、在存儲(chǔ)的時(shí)候存儲(chǔ)多大,放便讀取,從當(dāng)前地址讀取到第幾個(gè)
根據(jù)存儲(chǔ)單位的不同,將所有能夠表示整數(shù)的變量分成五種,int,short,long,long long,unsigned
int能夠表示的數(shù)據(jù)大小在WINDOWS下面是32位
short能夠表示的數(shù)據(jù)大小是16位
long在Windows下面能夠表示的大小是32位(在其他系統(tǒng)下可能不同)
long long能表示的大小是64位
unsigned代表的是當(dāng)前的數(shù)據(jù)類型是一個(gè)沒(méi)有符號(hào)的(默認(rèn)的其他幾種是signed),他的首位不再用戶表示符號(hào)位,也就是說(shuō)它所有的數(shù)據(jù)都用來(lái)表示正數(shù),那么他能夠表示正數(shù)區(qū)域范圍就比能夠表示負(fù)數(shù)及正數(shù)的區(qū)域范圍更大

需要注意進(jìn)位,進(jìn)位會(huì)影響到正確的值范圍
unsigned是前置函數(shù),如unsigned int;
unsigned與singned的區(qū)別在于,unsigned會(huì)把所有的長(zhǎng)度來(lái)表示數(shù)值,它不會(huì)表示負(fù)數(shù)
short<=int<=long<=long long;
內(nèi)存存儲(chǔ)的值其實(shí)是一樣的,只是看我們?nèi)绾蝸?lái)使用這個(gè)值,如何解析這個(gè)值是關(guān)鍵
需要顯示unsigned函數(shù)的數(shù)值用的占位符%u,如果用的是%d,則輸出的數(shù)值依舊是有符號(hào)位的數(shù)值,至少printf里面是這么做的;
我們應(yīng)該選擇合適的占位符來(lái)表示我們需要表示的數(shù)值,如果我們需要的是一個(gè)unsigned int的值的話,那么我么你就必須要用%u,而不是%d,如果需要的是int的值的話,就需要用%d,而不是%u;
使用int時(shí),如果要輸出十進(jìn)制,使用%d輸出,如果要輸出八進(jìn)制的話,用%o輸出,如果要輸出十六進(jìn)制的話,用%x輸出
如果要顯示標(biāo)準(zhǔn)的八進(jìn)制數(shù)值的話,用%#o輸出,如果要輸出標(biāo)準(zhǔn)的十六進(jìn)制數(shù)值的話,用%#x輸出,例:用%x輸出數(shù)字8的話,輸出的就是8.而用%#x輸出的話,就是0x8
使用long的時(shí)候,如果要更標(biāo)準(zhǔn)的表達(dá)此類的話,用%ld表示有符號(hào),用%lud表示無(wú)符號(hào),用%lx打印十六進(jìn)制值,用%lo打印八進(jìn)制的值
使用long long的時(shí)候,用%lld表示有符號(hào),用%llu表示無(wú)符號(hào)
使用short的時(shí)候,現(xiàn)在一般都是轉(zhuǎn)換成int后再打印,所以和int使用方式一致,所以使用short所耗費(fèi)的資源比int更多;