一道c++题

2024-12-31 10:16:56
推荐回答(5个)
回答1:

当然了,你用的是宏替代,而不是内联函数啊。宏替代的实质,其实就是字符c串替代。因此,y=S(z+2)=S(5+2),当用宏替代时,变为 5+2*5+2,因此结果明显是17啊。想共同切磋c++,请加我吧(543351954)。(我是一个业余编程爱好者)。

回答2:

define a b的实质是替换,把所有a出现的地方换成b,替换时b所代表的运算式原封不动,不会自行添加括号,就像Word里的文字替换

#define S(x) x*x:
S(z+2)=5+2*5+2=17

#define S(x) (x)*(x):
S(z+2)=(5+2)*(5+2)=49

#define S(x) x*(x):
S(z+2)=5+2*(5+2)=19

#define S(x) (x)*x:
S(z+2)=(5+2)*5+2=37

回答3:

这个是对define的理解

S(z+2)=z+2*z+2=5+2*5+2
而不是S(z+2)=(z+2)*(z+2)

这个没有什么多解释的。。就是deifne和函数的区别。
不理解也只能多看看书。

回答4:

因为宏定义只是带表符号,不是先进行运算
y=S(z+2)=z+2*z+2=5+2*5+2=17
宏定义没有计算优先权,也没有括号

回答5:

运行结果是这个样子的:5+2*5+2=17,明白?