jinry 发表于 2008-3-20 22:33

宏定义时的括号的完备性

在定义一些常量值的时候这些不是太明显,可是在定义一些的计算值的时候,比如:
#define Y(a, b)a*b
这样的宏就很成问题,当a或者b本来就是一个表达式的时候就可以出现意想不到的错误,如下
Y ( 1, 2+3 )
这样代入计算是1 * 2 + 3,肯定是错误的...

同样定义如#define Y(a, b) (a) + (b)也括号也是不完备的,如果出现
(3 * Y(1, 2))这样的计算的话也是不对的,所以括号完备的应该是
#define Y ( a, b )((a) + (b)),不仅要把每个元素都括住,同样,整个表达式也要括住

另外在定义宏的时候,应该注意的是如上面的,a, b的值在宏的执行过程中应该尽量不变的,如果真要求要在计算后改变变量的值,那么可以在后面明确地加上该语句,

[ 本帖最后由 jinry 于 2008-3-20 22:40 编辑 ]

10JQKA 发表于 2008-3-20 22:51

C语言考试TM的简单,,,

iptton 发表于 2008-3-21 00:31

C语言考试连语法都没能考完。。。拿满分都不能说明什么...

jinry 发表于 2008-3-21 01:13

LS的是在说我吗?
今天考试,让自己考了个满分,才刚刚及格...

不过如果你们大家能将上面的讲到的这么多的方面的,再加上指针的一些的东西的,那么你们就算是对C比较掌握了,其他的什么库之类的只是应用的问题...

iptton 发表于 2008-3-21 01:22

LS在这帖上说的内容,估计是学校里能考的最“高级”的话题了。。。

jinry 发表于 2008-3-21 02:02

关于指针,是C的超高级技巧.....
不知道怎么样有条理地描述,只是能知道怎么用,尽量避免出现错误.....

dreamwalker 发表于 2008-3-21 02:05

23L说的是学校的考试...对22L的话有感而发...

gyCai 发表于 2010-6-21 01:33

继续更新。

Nils 发表于 2010-7-9 00:12

还不错哦。。

jinry 发表于 2010-11-10 00:48

挖坟。。。。

不会游泳鱼 发表于 2010-11-15 22:10

加把土
页: 1 [2]
查看完整版本: 关于C语言