一、常量和C预处理器
1.符号常量(symbolic constant)
- 编译程序的时候程序中的符号常量都会被实际字面量所替换,这一过程称为编译时替换
- 格式:末尾不加分号,中间不加等号,字面量可以是数字,字符,字符串等
#define CHANGLIANGNAME 890
2.const限定符
- C90标准增加了const关键字,用于限定一个变量为只读
const int 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:\n");
printf("Biggest int: %d\n", INT_MAX);
printf("Smallest long long: %lld\n", LLONG_MIN);
printf("One byte = %d bits on this system.\n", CHAR_BIT);
printf("Largest double:%e\n", DBL_MAX);
printf("Smallest normal float:%e\n", FLT_MIN);
printf("float precision = %d digits\n", FLT_DIG);
printf("float epsilon = %e\n", FLT_EPSILON);
return 0;
}
![17.1](https://i-blog.csdnimg.cn/blog_migrate/b2ccb76dab370e628b621181023e51ef.png)
二、源码: