(4)函数调用时存在从实参传递数据的过程,而带参数的 宏不存在这种过程。 在编写C程序时,可根据需要来确定使用宏还是函数,函数 定义的语句多少无限制,而宏必须在一条语句中写完。 8.1.4实例验证 程序8-2:用带参的宏求两数中的大数并输出。 #define MAX(a,b)(a>b)?a:b mainO
(4)函数调用时存在从实参传递数据的过程,而带参数的 宏不存在这种过程。 在编写C程序时,可根据需要来确定使用宏还是函数,函数 定义的语句多少无限制,而宏必须在一条语句中写完。 8.1.4 实例验证 程序8-2:用带参的宏求两数中的大数并输出。 #define MAX(a,b) (a>b)?a:b main() {
inti,j形 i=10jF20; printf("the maximum is:%d\n",MAX(i,j)); } 该程序编译前,MAX(,)被定义的表达式所替换,其中的和 j作为实参替换定义中的形参。即prinfi语句被替换成以下 形式: printf("the maximum is:%d\n",(i>j)?i:j); 由上例可见,一些简单的函数可以直接用宏来定义,而不用
int i,j; i=10;j=20; printf("the maximum is:%d\n",MAX(i,j)); } 该程序编译前,MAX(i,j)被定义的表达式所替换,其中的i和 j作为实参替换定义中的形参。即prinf语句被替换成以下 形式: printf("the maximum is:%d\n",(i>j)? i:j); 由上例可见,一些简单的函数可以直接用宏来定义,而不用
函数。例如; #define MAX(&,y) (>y))():y) /*求x,y 中的较大者*/ #define ISODD(x)(x%2==1)?1:0 /*判断x是 否奇数*/ #define Y()()*()+3()+1 /*定义 y=x2+3x+1*/
函数。例如; #define MAX(x,y) (x>y)?(x):(y) /﹡求x,y 中的较大者﹡/ #define ISODD(x) (x%2= =1)?1:0 /﹡判断x是 否奇数﹡/ #define Y(x) (x)*(x)+3(x)+1 /﹡定义 y=x2+3x+1﹡/
8.2条件编译 8.2.1相关知识 一般情况下,源程序中所有的行都参加编译,但是有 时希望对其中一部分内容只在满足一定条件才进行编译, 也就是对一部分内容指定编译的条件,这就是“条件编 译”。有时,希望当满足某条件时对一组语句进行编译, 而当条件不满足时则编译另一组语句。 8.2.2实例验证 程序83:输入一行字母字符,根据需要设置条件编译, 使之能将字母全改为大写输出,或全改为小写字母输出
8.2 条件编译 8.2.1 相关知识 一般情况下,源程序中所有的行都参加编译,但是有 时希望对其中一部分内容只在满足一定条件才进行编译, 也就是对一部分内容指定编译的条件,这就是“条件编 译”。有时,希望当满足某条件时对一组语句进行编译, 而当条件不满足时则编译另一组语句。 8.2.2 实例验证 程序8-3:输入一行字母字符,根据需要设置条件编译, 使之能将字母全改为大写输出,或全改为小写字母输出
#define Letter 1 mainO) char str[20]="c language",c; inti; =0; while(c=str[时)=\0') {i++; #ifdef LETTER if(c>='a'&&c<='z)
#define Letter 1 main() { char str[20]="c language", c; int i; i=0; while((c=str[i] )!='\0') { i++; #ifdef LETTER if(c>='a' && c<='z')