一、数值常量
1、常见数值常量
65535、37 //十进制整型,默认
012、-023 //八进制整型,0开头,每一位只能0~7
0x3a、0X22F //十六进制整型,0x或0X开头,每一位只能0~9或A~F
123u、46U //无符号整型常量
123L、46l //长整型常量
4.6e3 //4.6×103
正确: 3.2 3. .2 3e2 3.5e2
错误: 3.5e2.5 10e e3 .e3
2、多种进制的使用场合
在printf函数中%d、%o、%x分别代表十、八、十六进制的输出。
在字符常量中'\ddd'、'\xhh'分别代表八、十六进制的转义字符。
八进制和十六进制一般只采用整型,不用小数形式。
例题:
int x=0101;printf("%d %c %o %x \101",x,x,x,x); //输出为 65 A 101 41 A
二、字符常量
1、普通字符
在计算机内部存储字符的ASCII码值。
'A'(65) 'a'(97) '0'(48)
空格' '(32) 换行'\n'(10) 退格'\b'(8)
空字符'\0'(0)
''为非法字符,不合法;""为空字符串,合法。
‘xab’严格意义上不合法,但是在编译器中,可视为‘b’。
‘\xab’合法,按照十六进制计算ASCII码即可。
2、转义字符
\101 即十进制 65
\401 即十进制 1 100 000 001截取低8位
\xab 即十进制 171 a*16+b
printf("ab\12c\10d"); //输出2行,第1行:ab,第2行:d
注:关于转义字符的详细使用说明,请参考博客文章《基础_003_转义字符》。
三、符号常量
1、define
#define N 12 //宏定义N为12,N是常量,不能被赋值
例题:
#define aa(x) x*(x-1)
printf("%d",aa(1+2)); //替换为 1+2*(1+2-1),输出5
2、const
关于const的详细使用说明,请参考后续指针部分的相关文章。