#define S(x) PT*x*x c 语言中#define的用法

求大神解决遇到一个C语言的题目,自己才疏学浅,对#define的用法没有完全理解,求帮助。题目如下:#include#define PT 3.5 ;#define S(x) PT*x*x ;main(){ int a=1, b=2; printf("%4.1f\n" , S(a+b)); }程序运行后的输出结果是(  )。A) 7.5B) 31.5C) 程序有错无输出结果D) 14.0 参考答案:C【解析】宏定义不是C语句,末尾不需要有分号。所以语句printf("%4.1f\n" , S(a+b));展开后为printf("%4.1f\n" ,3.5;*a+b*a+b;);所以程序会出现语法错误。虽然有解析,但是小的仍然不明白#define的错误,和解析,求解释。

因为宏定义#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。追问

那,那个解析上是怎么回事就是原本的S(a+b)变成了两个3.5;*a+b*a+b;

追答

解析上的意思,如果加上分号(;),即#define PT=3.5;(意思就是3.5;才是是PT的值,而不是3.5)。同理,S(x)的值是PT*x*x ;而不是PT*x*x

温馨提示:答案为网友推荐,仅供参考
相似回答