C语言题目

2025年03月12日 21:17
有4个网友回答
网友(1):

答案没有意义,或者说程序就没有意义。

#define实现的宏不是函数,只是相当于复制黏贴而已。

本体里面 B(a+b)实际上等于 A * a + b * a + b = 59

而这里再用双精度浮点数输出(printf里面没有lf,只有f对应double,float类型会提升为double进行输出),其实是格式不匹配,具体会输出什么完全看机器内部的浮点数存储形式和编译器实现,也就是说结果是未定义的,所以答案是错误的。

我的机器32位Win7用GCC编译运行,输出结果是乱码-1.#QNANO

网友(2):

答案应该是59吧
预处理器不进行计算,只是x替换成a+b,这点和函数是有区别的;
所以在下面B(a+b)=55*1+2*1+2=59

网友(3):

宏引用:易搞错,替换后是没有括号的:
55*a+b*a+b
=55*1+2*1+2=59
结果59 ,
但 %f 就不对了, 栈参数就乱了。

网友(4):

这是什么破程序,我一运行就崩溃
有明显的错误啊,%f是%d才行
改掉之后输出59
%f的会崩溃