曾經對 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;}