首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关预定义的有关问题

2012-10-20 
有关预定义的问题这个代码:#includestdio.h#define f(x) x*xint main(){int a 6, b 2, cc f(a) /

有关预定义的问题
这个代码:
#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);} 

热点排行