上面的int SQ(int);中的(int)是什么意思?
还有,
以下是我看到的分析:
在使用函数的例子中,函数调用是把实参i值传给形参y后自增1。然后输出函数值。因而要循环5次。输出1~5的平方值。而在使用宏的例子中,宏调用时,只作代换。SQ(i++)被代换为((i++)*(i++))。在第一次循环时,由于i等于1,其计算过程为:表达式中前一个i初值为1,然后i自增1变为2,因此表达式中第2个i初值为2,两相乘的结果也为2,然后i值再自增1,得3。在第二次循环时,i值已有初值为3,因此表达式中前一个i为3,后一个i为4,乘积为12,然后i再自增1变为5。进入第三次循环,由于i 值已为5,所以这将是最后一次循环。计算表达式的值为5*6等于30。i值再自增1变为6,不再满足循环条件,停止循环。从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。
我能理解上面这段文字,但是,我试了一下,结果是1,9,25。即1,3,5的平方。可按上面所说,应该是2,12,30啊。。。
如果是编译器的问题,那么又是怎么得到1,9,25的呢?
源代码在这。。。http://www.cnblogs.com/wangkangluo1/archive/2011/07/11/2103258.html 话说挺不错的。。。
另外字有点多,希望大家能耐心看完哈~
谢谢~
|