整数除以宏定义的其他整数常量,在C中返回不正确?

时间:2018-08-20 17:43:44

标签: c

在以下代码中,输出为 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;
    }

2 个答案:

答案 0 :(得分:2)

操作顺序:

dotnet publish30 / 30 * 301 * 3030 / 900

您需要在宏中加上括号以获取正确的行为:

0

答案 1 :(得分:0)

#define N2 (L * L)

printf("k = %d\n", id/(N2));

可以解决问题。