数据类型 - 关于常量的前缀、后缀
时间:2010-08-08 来源:wangmanlivsli
本文来自草根编程网:http://www.caogenbiancheng.com/?action-viewnews-itemid-94
曾经对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
#include
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,%Sn",c,cs,wc,ws);
printf("%d,%d,%d,%dn",n1,n2,n3,n4);
getchar();
return 0;
}