曾經對float num=3.14f; 這樣的賦值非常疑惑,其實現在也不明白.
既然說明了是float類型,又何必在3.14後面掛個f呢?
書上說:
int num=100; 一個整數常量將默認為int類型(除非常數有後綴或超出了int的范圍)
double num=3.14; 一個浮點數常量將默認為double類型
並要求:
long num=100L;
long long num=100LL;
unsigned long=100UL;
unsigned long long num=100ULL;
float num=3.14f;
這些後綴是大小寫無關的、(U和L是)無順序的; 我反復測試,看不出沒有區別.
我覺得這些東西用於 #define 還說得過去,用於指定類型的變量有必要嗎?
我猜唯一的必要性或許是讓編譯器少轉換一次.
不過知道還是有好處,以免看不懂別人的代碼.
總之,前人應該自有道理,希望誰知道能告訴我.
另外,如果是十六進制或八進制常數,將從int、unsigned、long、unsigned long中自動選擇最小的類型.
其他情況:
#include <stdio.h>
#include <stddef.h>
int main(void)
{
char c='a';
char cs[] = "abc";
wchar_t wc = L'A'; /* 這個 L 也可以省略 */
wchar_t ws[] = L"ABC";
int n1 = 65535;
int n2 = 0xFFFF; /* 十六進制 */
int n3 = 0Xffff; /* 大小寫都行 */
int n4 = 0177777; /* 八進制 */
printf("%c,%s,%c,%S\n",c,cs,wc,ws);
printf("%d,%d,%d,%d\n",n1,n2,n3,n4);
getchar();
return 0;
}
返回“學點C語言 - 目錄”