c - 在 C 中除以宏定义的 int 得到奇怪的结果

标签 c

<分区>

我想知道为什么当分母在宏中定义时,这个程序似乎不能正确地进行整数除法。

#include <stdio.h>
#define A 2
#define B 64
#define C A * B

int main() {
     int addr = 64;
     int idx = addr / C;
     printf("C=%d\n", C);
     printf("%d\n", idx);
     printf("%d\n", addr / 128);
     return 0;
}

在我的电脑上输出:

C=128
2048
0

预期输出:

C=128
0
0

最佳答案

int idx = addr / C;

成为

int idx = addr / A * B; // or 64/2 * 64 == 32*64

关于c - 在 C 中除以宏定义的 int 得到奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26724063/

相关文章:

c - 如何获得不易受骗的时间戳

c - 当数据变大时在c中搜索二叉树

c - 如何将 C 编译器安装到 Eclipse?

c - 如何获取UTF-8字符的值

c - 在 C 编程中使用 for 循环打印特定模式

c - For 循环 - 将无符号数与有符号整数进行比较

C 程序写入目录内容

c - 当我编写词法分析器时,tokens.h 有什么用?

c - C 中的二维插值

c - free() 函数不释放堆内存