第329页 | C Primer Plus 中文版 | 阅读 ‧ 电子书库

同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库

A.16 第16章

1.a.dist=5280*miles;是合法的。

b.plort=4*4+4;是合法的。但是如果用户实际上是想要4*(4+4),他应该使用#define POD(FEET+FEET)oc.nex==6;;是合法的,但是没有意义。显然,用户忘记了他是在为预处理器编写代码而不是用C编写代码。d.y=y+5;是合法的。berg=berg+5*lob;是合法的,但是可能得不到想要的结果。est=berg+5/y+5;是合法的,但是可能得不到想要的结果。nilp=lob*-berg+5;是合法的,但是可能得不到想要的结果。

2.#define NEW(X)((X) + 5)

3.#define MIN(X,Y)((X) <(Y) ?(x):(Y))

4.#define EVEN一GT(X,Y)((X) >(Y) &&(X) % \ 2 == 0 ? 1: 0)

5.#define PR(X,Y)printf(#X ″ is %d and ″ #Y ″ is &d\n″, X, Y)

因为在这个宏中X和Y绝不会被任何运算符(例如乘法)作用,所以不需要使用圆括号。

6.a.#define QUARTERCENTURY 25

b.#define SPACE ′ ′c.#define PS()putchar(′ ′)或者 #define PS()putchar(SPACE)d.#define BIG(X)((X) + 3)e.#define SUMSQ(X,Y)((X) *(X) +(Y) *(Y))

7.试试这样:

或者,如果您的实现不能识别地址的%p说明符,可以使用%u或%lu。

8.使用条件编译指令。一种方法是使用#ifinef:

9.

10.argv参数应该被声明为char *argv[]。命令行参数被存储为字符串,所以程序应该首先把argv[l]中的字符串转换为类型为double的值,例如,可以使用stdlib.h库中的atof()函数。应该为sqrt()函数包含math.h头文件。程序在求平方根之前应进行检查参数是否为负值。

11.a.应该像这样进行函数调用:

b.下面是一个适用的比较函数:

12.a.应该像这样进行函数调用:

b.应该像这样进行函数调用:

请支持我们,让我们可以支付服务器费用。
使用微信支付打赏


上一页 · 目录下一页


下载 · 书页 · 阅读 ‧ 电子书库