预计阅读本页时间:-
A.16 第16章
1.a.dist=5280*miles;是合法的。
b.plort=4*4+4;是合法的。但是如果用户实际上是想要4*(4+4),他应该使用#define POD(FEET+FEET)o
c.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)
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 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.应该像这样进行函数调用: