一個程序是由算法和數值構成的,C語言當中用來表示數據的稱之為變量和常量,變量指的是能夠變化的值,常量就是不可變的,如:1、2、3、A、B、C等等
C語言為了方便我們更好地使用數據,光整數就分了四種變量類型,分別是:short,long,long long,unsignede修飾符
編程語言當中用來表示基本單位的一個量(存儲單位),最小的叫位(bit)內存一次性寫入和讀取8bit的數據,在C語言中,使用的比較少,一般C語言當中我們用刀最小的單位叫字節(Byte),1Byte=8bit,隨著計算機的發展,字節也越來越小,于是出現了字(word)和雙字(dword),一個字等于4Byte,一個雙字等于8Byte。現在雙字已經成為計算機中較為基礎的數量單位,因為熟知的整數很多都是用雙字來代表,也就是32位。
想要在計算機當中存儲一個數值:
一、在哪個內存地址當中進行存儲
二、在存儲的時候存儲多大,放便讀取,從當前地址讀取到第幾個
根據存儲單位的不同,將所有能夠表示整數的變量分成五種,int,short,long,long long,unsigned
int能夠表示的數據大小在WINDOWS下面是32位
short能夠表示的數據大小是16位
long在Windows下面能夠表示的大小是32位(在其他系統下可能不同)
long long能表示的大小是64位
unsigned代表的是當前的數據類型是一個沒有符號的(默認的其他幾種是signed),他的首位不再用戶表示符號位,也就是說它所有的數據都用來表示正數,那么他能夠表示正數區域范圍就比能夠表示負數及正數的區域范圍更大
需要注意進位,進位會影響到正確的值范圍
unsigned是前置函數,如unsigned int;
unsigned與singned的區別在于,unsigned會把所有的長度來表示數值,它不會表示負數
short<=int<=long<=long long;
內存存儲的值其實是一樣的,只是看我們如何來使用這個值,如何解析這個值是關鍵
需要顯示unsigned函數的數值用的占位符%u,如果用的是%d,則輸出的數值依舊是有符號位的數值,至少printf里面是這么做的;
我們應該選擇合適的占位符來表示我們需要表示的數值,如果我們需要的是一個unsigned int的值的話,那么我么你就必須要用%u,而不是%d,如果需要的是int的值的話,就需要用%d,而不是%u;
使用int時,如果要輸出十進制,使用%d輸出,如果要輸出八進制的話,用%o輸出,如果要輸出十六進制的話,用%x輸出
如果要顯示標準的八進制數值的話,用%#o輸出,如果要輸出標準的十六進制數值的話,用%#x輸出,例:用%x輸出數字8的話,輸出的就是8.而用%#x輸出的話,就是0x8
使用long的時候,如果要更標準的表達此類的話,用%ld表示有符號,用%lud表示無符號,用%lx打印十六進制值,用%lo打印八進制的值
使用long long的時候,用%lld表示有符號,用%llu表示無符號
使用short的時候,現在一般都是轉換成int后再打印,所以和int使用方式一致,所以使用short所耗費的資源比int更多;