2014-12-04 82 views

回答

2

i=m*m实际上是计算为

10 + 2 * 10 + 2

这是

10 + 20 + 2 = 32

#include<stdio.h> 
#define m 10+2 
int main() 
    { 
    int i; 
    i=(m)*(m);  \\this will provide you with output as (10+2)*(10+2) 
    printf("%d",i); 
    return 0; 
    } 
+0

我在下面的代码中有关于宏功能的另一个疑问。 – RAMD 2014-12-04 19:09:26

+1

错误的解决方案。总是把括号放在宏定义中,所以你不必在调用时考虑它。 – 2014-12-04 19:14:51

+0

嗯..实际上Aasmund已经给出了这个解决方案,所以我去了一个备用的解决方案,以明确使用括号来执行多行操作。 – 3Demon 2014-12-04 19:18:56

5

宏展开不听从周围的语法,所以i=m*m被扩展到i=10+2*10+2,而不是i=(10+2)*(10+2)。这究竟是为什么每个人都应该加上括号宏定义和参数:

#define m (10+2) 
相关问题