常量和C预处理器
     用符号常量的好处:可以清楚的表达一个事物和到时要一改变符号常量的值比一个一个的改常量容易。
     如何建立一个符号常量:用预处理器 #define + 常量符号名 + 常量值(注意这里面没有赋值符(=)和逗号因为它不是C的语句,它是一种替代机制)格式: #define  NAME value例子:#define TAXRATE 1.015 当编译器编译程序时,值0.015将会在TAXRATE出现的每个地方替代它。这称为编译代入法。这样定义的常量称为明显常量。为什么常量符号名要大写?大写可以使程序更易阅读,因为它可以很容易的区分是常量称号还是变量。另个还有一种命名的约定,就是在名字前加上一个前缀c_或者是k_来表示常量,符号常量所用的名字必须满足变量命名规则。可以使用大写,小写字母,数字,下划线,但是第一个字符不能以数字开头。
 
//4-4.c   -------- 这个是比萨饼的例子中使用定义常量
#include <stdio.h>
#define PI 3.14159
int main (void)
{
       float area, circum, radius ;
      
       printf ("What is the redius of your pizza?\n");
       scanf ("%f",&radius);
       area = PI * radius * radius;
       circum = 2.0 * PI *radius;
       printf ("Your basic pizza parameters are sa follows: \n");
       printf ("caicumference = %1.2f,area = %1.2f\n",circum,area);
       return 0 ;
}
/*   运算结果
    What is the redius of your pizza?
    6.0
    Your basic pizza parameters are sa follows:
    caicumference = 37.70,area = 113.10
    Press any key to continue
*/
Printf ()语名中的%1.2f使结果四舍五入为保留两位小数。
#define 语句也可以用来定义字符和字符串,但是字符用单引号括起来,字符串用双引号括起来,但是要注意的是,符号后的所有内容都会被代替。
 
系统定义的明显常量
C 头文件limits.h 和float.h分别提供有关整数类型和浮点类型的大小限制的详细信息。每个文件都定义了一系列应用于您的实现的明显常量即:如果你的系统使用4个字节的int类型,那么这个系统的limits.h文件就会提供符合4个字节整型限制。
                                
 
Limits.h中的一些符号常量
 

CHAR_BIT
一个char 的位数
CHAR_MAX
Char 类型的最大值
CHAR_MIN
Char 类型的最小值
SCHAR_MAX
Signed char类型的最大值
SCHAR_MIN
Sigmed char类型的最小值
UCHAR_MAX
Unsigned char类型的最大值
SHRT_MAX
Shrt类型的最大值
SHRT_MIN
Shrt类型的最小值
USHRT_MAX
Unsigned shrt类型的最大值
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_MANT_DIG
Float 类型的尾数位数
FLT_DIG
Floa类型的最少有效数字(十进制)
FLT_MIN_10_EXP
带有全部有效数字的float类型的负指数最小值(以10这底)
FLT_MAX_10_EXP
Float 类型的正指数的最大值(以10为底)
FLT_MIN
保留全部精度的float类型正数的最小值
FLT_MAX
Floa类型正数最大值
FLT_EPSILON
1.00和比1.00大的最小的float类型之间的差值

为double long double 类型也定义了相对应的常量,只是常量名的FLT被DBL和LDBL所代替。
//4-5.c --- 使用limit.h和float.h中定义的常量
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main (void)
{
       printf ("Some number limits for this systrm: \n");
       printf ("Biggest int :%d\n",INT_MAX);
       printf ("Smallest unsigned long:%ld\n",LONG_MIN);
       printf ("One byte = %d bits on this syetem.\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 ;
      
}