在以下代码中,输出为 30 ! ,应该为0。我缺少什么吗?
#include <stdio.h>
#define L 30
#define N2 L * L
int main() {
unsigned int id = 30;
printf("k = %d\n", id/N2); //this prints 30 but 30/900 should be zero!
printf("k = %d\n", id/900); //this prints 0 OK!
return 0;
}
答案 0 :(得分:2)
操作顺序:
dotnet publish
是30 / 30 * 30
。 1 * 30
是30 / 900
。
您需要在宏中加上括号以获取正确的行为:
0
答案 1 :(得分:0)
#define N2 (L * L)
或
printf("k = %d\n", id/(N2));
可以解决问题。