概述
#define定义的指令允许带参数。例如,下面的定义也是合法的:
观察下面的这个程序:
程序输出:
为什么第二个输出的数是32不是144?不要忘了sqr中的x不是一个变量,编译器仅仅是把x替换为10+2,因此sqr(10+2)的结果是10+2*10+2,当然是32咯。为了避免这种情况,这样写就没问题了:
#define sqr(x) x*x
观察下面的这个程序:
#include <stdio.h>
#define begin {
#define end }
#define writeln(num) printf("%dn",num)
#define sqr(x) x*x
int main()
begin
writeln(sqr(100));
writeln(sqr(10+2));
end
程序输出:
10000
32
为什么第二个输出的数是32不是144?不要忘了sqr中的x不是一个变量,编译器仅仅是把x替换为10+2,因此sqr(10+2)的结果是10+2*10+2,当然是32咯。为了避免这种情况,这样写就没问题了:
#define sqr(x) ( (x) * (x) )
本文出自 51CTO.COM技术博客
转载于:https://www.cnblogs.com/theotherme/archive/2008/09/29/1302209.html
最后
以上就是苗条铃铛为你收集整理的#define sqr(x) x*x的全部内容,希望文章能够帮你解决#define sqr(x) x*x所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复