一、常量和C预处理器
1.符号常量(symbolic constant)
- 编译程序的时候程序中的符号常量都会被实际字面量所替换,这一过程称为编译时替换
- 格式:末尾不加分号,中间不加等号,字面量可以是数字,字符,字符串等
#define CHANGLIANGNAME 890
2.const限定符
- C90标准增加了const关键字,用于限定一个变量为只读
const int MONTHS = 12;//MONTHS在程序中不可以更改,值为12
- const用起来比#define更加灵活;
- const类型限定符声明的是变量不是常量。
3. 明示常量
- C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息
- 又称为符号常量
- limits.h中的一些明示常量
明示常量 |
含义 |
CHAR_BIT |
char类型的位数 |
CHAR_MAX |
char类型的最大值 |
CHAR_MIN |
char类型的最小值 |
SCHAR_MAX |
signed char类型的最大值 |
SCHAR_MIN |
signed char类型的最小值 |
UCHAR_MAX |
unsigned char类型的最大值 |
SHRT_MAX |
short类型的最大值 |
SHRT_MIN |
short类型的最小值 |
USHRT_MAX |
unsigned short类型的最大值 |
INT_MAX |
int类型的最大值 |
INT_MIN |
int类型的最小值 |
UINT_MAX |
unsigned int最大值 |
LONG_MAX |
long类型最大值 |
LONG_MIN |
long类型最小值 |
ULONG_MAX |
unsigned long类型最大值 |
LLONG_MAX |
long long类型最大值 |
LLONG_MIN |
long long类型的最小值 |
ULLONG_MAX |
unsigned long long类型最大值 |
- float.h中的一些明示常量(把明示常量名种的FLT分别替换成DBL和LDBL,即可分别表示double和long double
明示常量 |
含义 |
FLT_MANT_DIG |
float类型的尾数位数 |
FLT_DIG |
float类型的最少有效数字位数(十进制) |
FLT_MIN_10_EXP |
带有全部有效数字的float类型的最小负指数(以10为底) |
FLT_MAX_10_EXP |
float类型的最大正指数(以10为底) |
FLT_MIN |
保留全部精度的float类型最小整数 |
FLT_MAX |
float类型的最大正数 |
FLT_EPSILON |
1.00和比1.00大的最小float类型值之间的差值 |
#include<stdio.h>
#include<limits.h> //整形限制
#include<float.h> //浮点型限制
#pragma warning(disable:4996)
int D17_defines(void) {
printf("Some number limits for this system:
");
printf("Biggest int: %d
", INT_MAX);
printf("Smallest long long: %lld
", LLONG_MIN);
printf("One byte = %d bits on this system.
", CHAR_BIT);
printf("Largest double:%e
", DBL_MAX);
printf("Smallest normal float:%e
", FLT_MIN);
printf("float precision = %d digits
", FLT_DIG);
printf("float epsilon = %e
", FLT_EPSILON);
return 0;
}
二、源码: