首页 > 解决方案 > 当使用增量运算符调用时,将哪些值传递给`#define`?

问题描述

我试图在这里理解我的代码的输出:

#include <stdio.h>
#define DOUBLE(x) (x+x)

int main() {
    int i, j;
    i = j = 3;

    printf("%d\n", DOUBLE(++i));  // Output: 10
    printf("%d\n", DOUBLE(j++));  // Output: 7

    return 0;
}

这是我的解释:DOUBLE这是一个宏,因此预处理器替换

然后编译器在每个语句中的加法操作之前进行预增量i和后增量。j

我的逻辑(失败)与输出不匹配。DOUBLE当我使用具有增量运算符的 argumnets调用时,幕后发生了什么。

标签: cc-preprocessorincrement

解决方案


推荐阅读