我唯一想到的是,MULT((3 + 2)(5 * 4))= 100而不是62?有人可以解释吗?

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#define ADD(x1, y1) x1 + y1
#define MULT(x1,y1) x1 * y1


int _tmain(int argc, _TCHAR* argv[])
{
    int a,b,c,d,e,f,g;
    a=2;
    b=3;
    c=4;
    d=5;
    e= MULT(ADD(a,b),MULT(c,d));
    printf("the value of e is: %d\n", e);
    system("PAUSE");
}

最佳答案

扩展宏时,这是:

MULT(ADD(a,b),MULT(c,d))


变成:

a + b * c * d


用变量的值替换变量,等效于:

2 + 3 * 4 * 5


根据优先级规则求值的表达式的值为62,因为乘法的优先级高于加法。

不要为此使用宏:使用函数。

关于c++ - 为什么这是62的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11960085/

10-10 23:35