小编mad*_*ddy的帖子

当用作较大数学表达式的一部分时,使用宏导致错误输出 - 为什么会发生这种情况?

这是一个正常的C例行程序,我在一些问题库中找到了.如下所示:

#define CUBE(p) p*p*p

main()
{
    int k;
    k = 27 / CUBE(3);
    printf("%d", k);
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解和知识,K的值应该是1,因为在预处理期间CUBE(3)将被3*3*3替换,并且在随后的编译之后它将给出值1,但是它已经显示了值81这让我很想知道它是怎么发生的.

任何人都可以证明上面这个问题的答案是正确的.

c macros

6
推荐指数
1
解决办法
390
查看次数

标签 统计

c ×1

macros ×1