数据类型 和 字面值 的关系:
如果有语句
int a = 1234;
那么int就是数据类型,a是变量,1234是字面值。int的字面值也就是可以用来初始化int类型变量的东西(不要说用其他变量也可以初始化哦!)。同样,char的字面值当然是机器的ASCII字符集了,分为可见的和不可见的字符,表示方法有两种,见下面程序。
常量(constant)可以理解为所谓的字面值,
常量和
用const修饰的变量并不是一个概念。
#include <stdio.h>
int main(void)
{
/* 整形常量(字面值) */
// 十进制表示
int in = 1234;
long ln = 1234L;
unsigned int uin = 1234u;
unsigned long uln = 1234UL;
// 十六进制表示
in = 0xabul;
// 八进制表示
in = 0123ul;
// 没有后缀表示某整形常量为short
/* 字符常量(字面值) */
// 普通表示
char c = 'x';
// 用转义序列表示
c = '\n';
c = '\100'; // 1-3位八进制数
c = '\x4a'; // 1-2位十六进制数
/*
* 所有转义序列
* -----------------
* \a(对应ASCII表中值为7的字符(响铃))
* \b(值为8(退格))
* \f \'
* \n \"
* \r \\
* \t \?
* \v \ooo \xhh
* -----------------
* 特别的,转义序列'\ooo'对应ASCII表中值为0ooo(八进制)的字符,
* '\xhh'对应表中值为0xhh(十六进制)的字符。
*/
/* 浮点型常量(字面值) */
float f = -12.34e-1f; // float
double df = 1234.56; // double
long double ldf = 1234.56L; // long double
/* 字符串常量(字面值) */
/* 枚举常量 */
enum Month_t
{
JAN = 1, FEB, MAR, APR, MAY, JUN,
JUL, AUG, SEP, OCT, NOV, DEC
};
enum Month_t m = MAR; // c编译器不检查,c++编译器会检查
return 0;
}