文档详情

第9章[改]_预处理.ppt

发布:2015-09-14约5.76千字共31页下载文档
文本预览下载声明
输出结果是什么? #define MU(X,Y) X*Y main() { int a,b; a=MU(5,2); b=6/MU(a+3,a); printf(a=%d\nb=%d\n,a,b); } #define MU(X,Y) X*Y #define MU(X,Y) ((X)*(Y)) 以下程序中for循环执行的次数是[ ] A)5 B)6 C)8 D)9 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i; for(i=1;i=NUM;i++); printf(%d\n,i); } 9.3 条件编译 概念:所谓“条件编译”,是对部分内容指定编译的条件,使其只在满足一定条件才进行编译。 条件编译命令的几种形式: (1)#ifdef 标识符 程序段1  #else 程序段2  #endif (2)#ifndef 标识符 程序段1  #else 程序段2  #endif (3) #if 表达式 程序段1   #else 程序段2   #endif 例9.7 输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。 #include stdio.h #define LETTER 1 void main() {char str[20]=C Language,c; int i; i=0; while((c=str[i])!=\0) { i++; #if LETTER if(c=a c=z) c=c-32; #else if(c=A c=Z) c=c+32; #endif printf(%c,c); } } 运行结果为: C LANGUAGE * * * 第九章 本章要点 预处理的概念 C语言处理系统的预处理功能 预处理命令的使用 主要内容 9.1 宏定义 9.2“文件包含”处理 9.3 条件编译 基本概念 ANSI C标准规定可以在C源程序中加入一些“预处理命令” ,以改进程序设计环境,提高编程效率。 这些预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”。 经过预处理后程序可由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 基本概念 C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。 C提供的预处理功能主要有以下三种:   1.宏定义   2.文件包含   3.条件编译 这些功能分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。例如: #define #include 9.1 宏定义 9.1.1 不带参数的宏定义 宏定义一般形式为: #define 标识符 字符串 例如:#define PI 3.1415926 宏定义的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串。 这个标识符(名字)称为“宏名”。 在预编译时将宏名替换成字符串的过程称为“宏展开”。#define是宏定义命令。 #include stdio.h #define PI 3.1415926 void main() { float l,s,r,v; printf(input radius:); scanf(%f,r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf(l=%10.4f\ns=%10.4f\nv=%10.4f\n,l,s,v); } 例9.1 使用不带参数的宏定义。 input radius: 4↙ 运行情况如下: 1=25.1328 s=50.2655 v=150.7966 (1) 宏名一般习惯用大写字母表示,以便与变量名相区别。但这并非规定
显示全部
相似文档