请教#define的用法

2025-03-23 13:57:16
推荐回答(3个)
回答1:

当i=2(小于等于10)时,调用ss宏定义“ss(++i)” -> ((++i)*(++i))
3 4 ---> 所以结果就是4*4等于16呀
当i=4(小于等于10)时,调用ss宏定义“ss(++i)” -> ((++i)*(++i))
5 4 6 ---> 所以结果就是6*6等于36呀
当i=6(小于等于10)时,调用ss宏定义“ss(++i)” -> ((++i)*(++i))
7 8 ---> 所以结果就是8*9等于64呀

当i=8(小于等于10)时,调用ss宏定义“ss(++i)” -> ((++i)*(++i))
9 10 ---> 所以结果就是10*10等于100呀
当i=10(小于等于10)时,调用ss宏定义“ss(++i)” -> ((++i)*(++i))
11 12 ---> 所以结果就是12*12等于144呀
当i = 12时,大于了10,所以就退出了循环

记住了,宏编译是就是机械得替换了,不进行任何计算的

回答2:

准备的说是替换成((n)*(n)) 。 宏定义在c程序编译时将宏名替换成字符串。这样做可以见名知意,还有这个变量如果要更换数值,只需要修改一处就可以了。
首先第一次进入循环的时候i=2,然后开始执行((++i)*(++i)) ,首先括号的优先级高,先执行第一个++i后i=3,再计算后面括号里面的++i后i=4,则第一次输出为4*4=16;现在i=4了,再次进入循环,执行上述步骤,得到6*6=36。以此类推。

回答3:

这里就是说:ss(n)=n*n
把代码中的所有出现ss(n)的地方都替换成n*n.
相当于生成了一个函数