c/c++程序的编译输出结果为什么会又出入


#include <stdio.h>
#define MOD(x,y) x%y

int main()
{
    int a=13,b=94;
    printf("%d\n",MOD(b,a+4));
    return 0;
}

为什么则个程序在vscode windows环境下输出的结果是 7 ,而我自己计算的是9,问了ai得到的是8

#define MOD(x,y) x%y 是宏替换,不是函数,所以MOD(b, a+4) 就被替换为 b % a + 4 。实现正确功能的写法: #define MOD(x,y) (x)%(y)

printf("%d\n",MOD(b,a+4));
其实是
printf("%d\n", b%a+4);
94%13余数是3
所以是3+4=7

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^