关于宏定义max函数和编译器的小问题跪求大佬解答

P1006 [NOIP2008 提高组] 传纸条

1. 经典优先级问题,你可以试试展开 2. 数组太大
by yukimianyan @ 2023-03-30 19:47:24


@[tndbsfk](/user/955141) 一个简单的例子: ```c #include <assert.h> #define subtract(a, b) a - b static_assert(subtract(1, 2 - 3) * 4 == 8); ``` 这段代码过不了编译,因为 `1 - 2 - 3 * 4` 的值是 `-13` 而不是 `8`。一般来说,能用函数代替的宏就不要写成宏。 ```c static int max_int(int a, int b) { return a > b ? a : b; } ```
by ud2_ @ 2023-03-30 20:00:33


@[yukimianyan](/user/509229) 谢谢
by tndbsfk @ 2023-03-30 21:47:09


@[ud2_](/user/206953) 明白啦,谢谢!
by tndbsfk @ 2023-03-30 21:47:41


|