C++程序设计(谭浩强完整版)-输入输出、控制、函数解读.ppt

C++程序设计(谭浩强完整版)-输入输出、控制、函数解读.ppt

  1. 1、本文档共217页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计(谭浩强完整版)-输入输出、控制、函数解读

* 带参数的宏定义 #define 宏名(参数表) 字符串 #define S(a, b) a*b .... float x, y,area; cinxy; area=S(x, y); /* area=x*y; */ 形式参数 实际参数 宏定义 宏调用 定义的宏 实参代入后还原 * 按#define命令行中指定的字符串从左至右进行置换宏名,字符串中的形参以相应的实参代替,字符串中的非形参字符保持不变。 #define S(a, b) a*b area=S(3,2) 3*2 机械地将实参代入宏定义的形参形式 S(a,b)等同于 a*b S(3,2)等同于 3*2 * #define PI 3.1415926 #define S(r) PI*r*r void main(void) { float a, area, b; a=3.6; b=4.0; area=S(a); cout“r=“a“\narea=”areaendl; } S(r) PI*r*r S(a) PI*a*a PI*a*a 编译前机械替换,实参形参一一对应 * #define PI 3.1415926 #define S(r) PI*r*r void main(void) { float a, area, b; a=1; b=2; area=S(a+b); cout“r=“a“\narea=”areaendl; } S(r) PI*r*r S(a+b) PI*a+b*a+b 编译前机械替换,实参形参一一对应 宏展开时实参不运算,不作语法检查 #define S(r) PI*(r)*(r) S(a+b) PI*(a+b)*(a+b) 错误 * 定义宏时在宏名与带参数的括弧间不能有空格。 #define S_ (r) P*r*r 带参数的宏与函数调用的区别 相同:有实参、形参,代入调用。 不同之处: 1、函数调用先求表达式的值,然后代入形参,而宏只是机械替换。 2、函数调用时形参、实参进行类型定义,而宏不需要,只是作为字符串替代。 3、函数调用是在运行程序时进行的,其目标代码短,但程序执行时间长。而宏调用是在编译之前完成的,运行时已将代码替换进程序中,目标代码长,执行时间稍快。 一般用宏表示实时的、短小的表达式。 * #define A 3 #define B(a) ((A+1)*a) 执行 x=3*(A+B(7)); 后, x的值为: 93 #define neg(x) ((-x)+1) int neg( int x) {return x+1; } void main(void) { int y; y=neg(1); cout“y=“yendl; } y=0 编译前机械替换,实参形参一一对应 ((-1)+1) * 文件包含 一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。 # include “文件名” file1.cpp B A #include “file2.cpp” A B file1.cpp file2.cpp * 注意: 1、文件名是C的源文件名,是文本文件,后缀名可以任选。*.cpp *.h 2、一个#include语句只能指定一个被包含文件。 3、文件名用双引号或尖括号括起来。 4、包含后所有源文件编译为一个可执行文件。 * 条件编译 C语言允许有选择地对程序的某一部分进行编译。也就是对一部分源程序指定编译条件。 源程序 可以将部分源程序不转换为机器码 * 条件编译有以下几种形式: 1、 # ifdef 标识符 程序段1 # else 程序段2 # end if 当标识符已被定义过(用#define定义),则对程序段1进行编译,否则编译程序段2. # define DEBUG ...... # ifdef DEBUG coutx‘\t’yendl; # endif 标识符 * 2、 # ifndef 标识符 程序段1 # else 程序段2 # endif 与形式1相反,当标识符没有被定义过(用#define定义),则对程序段1进行编译,否则编译程序段2。 # define DEBUG ...... # ifndef DEBUG coutx‘\t’yendl; #

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档