int nRet = 0; unsigned int unRet = 0U; short hRet = 0; unsigned short uhRet = 0; long lnRet = 0L; unsigned long ulnRet = 0UL; char cKey = '\0'; unsigned char ucKey = '\0'; long long llnRet = 0LL; unsigned long long ullnRet = 0ULL; float fRet = 0F; double dRet = 0; long double ldRet = 0L;其中比較特別的是,當dRet宣告成倍精數的資料型態,且初始化為0,這個0會自動地以倍精數的型態來儲存;若是像ldRet宣告成long double,且初始化為0,這個時後就必須加上後置的L,變成0L,告訴電腦,這個ldRet = 0L必須要以long double的型態來儲存。
最後,人們也不易記住的,就是這些資料型態在printf()時該如何表示?? 直接用範例來說明會比較快:
#include <stdio.h> int main(void) { int nRet = 188; printf("nRet = %d \n", nRet); // nRet = 188, 十進位表示法 printf("nRet = %o \n", nRet); // nRet = 274, 八進位表示法 printf("nRet = %x \n", nRet); // nRet = bc, 16進位表示法 printf("nRet = %X \n", nRet); // nRet = BC, 16進位表示法 return 0; }八進位表示法的部份,用關鍵字%o來表示;字母o表示的是八進位的英文Octal,來做為後置修飾;同理,在16進位的部份,%x和%X的差異在於呈現出來的16進制的字母大小寫的差別。X (x)代表的是英文的16進位,Hexadecimal。
在接下來的範例中,不論是%o或是%X、%x都是同樣的意思,就不再贅述了。
#include <stdio.h> int main(void) { unsigned int unRet = 40U; printf("unRet = %u \n", unRet); retuen 0; }unsigned int的部份就簡單多了,就只有%u;%uo、%uO、%ux、%uX或者是%ou、%Ou、%xu、%Xu這些都是沒有意義的。
#include <stdio.h> int main(void) { short hRet = 1000; unsigned short uhRet = 2000; char cKey = '\0'; unsigned char ucKey = 'R'; printf("hRet = %d \n", hRet); printf("uhRet = %u \n", uhRet); printf("cKey = %c \n", cKey); printf("ucKey = %c", ucKey); return 0; }短整數 (short, unsigned short)的部份也很容易理解,它的宣告方式和int一樣,不需要任何的後贅修飾;字元的部份也很簡單,不管是否有signed或unsigned,都是用%c來表示。
(To be continue....)
Reference: Data type of C (I)
沒有留言:
張貼留言