读书人

有关预定义的有关问题

发布时间: 2012-10-20 14:12:47 作者: rapoo

有关预定义的问题
这个代码:
#include<stdio.h>
#define f(x) x*x

int main()
{
int a = 6, b = 2, c;
c = f(a) / f(b);
printf("%d\n", c);
}

为什么结果是36。不应该是36/4 = 9的吗。有点疑惑,所以来这问问大家了

[解决办法]
改成 (x)*(x)试试
不加括号相当于 6*6/2*2就是36
[解决办法]

C/C++ code
//宏只是展开c = f(a) / f(b);c = a*a / b*b;//你应该这样定义#define f(x) (x*x)
[解决办法]
宏定义虽然和函数有一定的相似性,,但是宏定义只是在宏定义出现的地方进行替换。而函数则是存储在一定的区域中,有一个指针指向函数,每次出现函数调用时访问此处的内存。
c = f(a) / f(b);
替换成c=a×a/c×c;
结果就出来了。。
[解决办法]
应该这样
C/C++ code
#include<stdio.h>#define f(x) ((x)*(x))int main(){  int a = 6, b = 2, c;  c = f(a) / f(b);  printf("%d\n", c);} 

读书人网 >C语言

热点推荐