概述
***********************************************************************************************************
------------------------------------------------------分割线---------------------------------------------------
***********************************************************************************************************
进入今天的学习吧
上次说到了这个程序,研究了string()函数和sizeof运算符的区别,详见上篇《C Primer Plus的学习_4》。
/*praise2 比较strlen()和sizeof*/
#include <stdio.h>
#include <string.h>
#define PRAISE "You are an extraordinary being."
int main (void)
{
char name [40];
printf("What's your name ?n");
printf("My name is ");
scanf("%s",name);
printf("Hello,%s,%sn",name,PRAISE);
printf("Your name of %u letters occupies %u memory cells.n",strlen(name),sizeof name);
printf("Your name of %u letters ",strlen(PRAISE));
printf("occupies %u memory cells.n",sizeof PRAISE);
return 0;
}
下面来说说【#define PRAISE "You are an extraordinary being."】这一行 。
当你阅读一个很长的程序时,见到常量名会比见到数字更加亲切,常量名也能表达更多信息。可能有同学要说数字更方便,直接拿来用就行了,还不用定义。
是的,说的没错。
但是当写一个很长的程序时,如果要使用同一个数常量很多次,有时还需要改动这些值,一个一个改岂不是很麻烦?
如果提前定义好了一个常量,改动的时候只要在开头微调就行了呀,是不是很方便?
而且还有一个原因,那就是。。。。。。。。。。。。逼。。。。。。格。。。。。。高。。。。。。
C预处理器
预处理器是如何定义常量的呢?只要在只要在程序顶部添加一行例如:
#define TAXRATE 66666
效果就是程序里所有 TAXRATE 的值都会变成666666
定义的格式如下所示
#define NAME value
关于为什么要大写。。。这是为了提高程序可读性,看到这个全大写的名字就会知道这是个符号常量,不是个变量。
小写当然也是没问题的,但这毕竟是行业约定俗成的东西,还是乖乖遵守为好。
而且还有一个原因,那就是。。。。。。。。。。。。逼。。。。。。格。。。。。。高。。。。。。
【注:符号常量的命名与变量相同,可以用大写小写字母、数字和下划线,首字母不能为数字】
来个例子
/*pizza.c 使用已定义的常量*/
#include <stdio.h>
#define PI 3.14159
int main (void)
{
float area, circum, radius;
printf("What's the rsdius of your pizza?n");
scanf("%f",&radius);
area = PI * radius * radius;
circum = 2.0 * PI * radius;
printf("Your basic pizza parameters are as follow:n");
printf("circumference = %1.2f,area = %1.2fn",circum,area);
return 0;
}
这里的"PI"就是符号常量,定义好了之后想怎么用就怎么用。
同时,#define指令还可以定义字符和字符串常量
#define BEEP 'a'
#define TEE 'T'
#define ESC '