早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言判断题解释。若有宏定义:#defineS(a,b)t=a;a=b;b=t;由于变量t没有定义,所以此宏定义是错误的。这题是对的,还是错的,为什么?

题目详情
C语言判断题解释。若有宏定义:#define S(a,b) t=a;a=b;b=t;由于变量t没有定义,所以此宏定义是错误的。 这题是对的,还是错的,为什么?
▼优质解答
答案和解析
此宏定义是正确的,但是在使用的时候可能会出错,也可能不出错。 出错的情况: int a = 5, b = 10; S(a, b); 会提示t是没有定义的标识符,因为宏S展开之后的代码如下: t = a; a = b; b = t; 不出错的情况: int a = 5, b = 10; int t; S(a, b); 宏展开后为t = a; a = b; b = t; 此时t正好是定义的一个整形变量,因此不出错。