C/C++中宏定义加不加括号的区别?

发布时间 2023-06-13 17:03:31作者: 跟Tom学编程-一对一

在 C/C++ 语言中,#define 是用来定义预处理宏的指令。
宏定义的目的是为了在代码中替换一些常量或表达式。

#define HOUR 365*24
表达式 result = h / (HOUR) 将展开为 result = h / (365*24)。由于括号的存在,先计算 (365*24),再执行整数除法。
表达式 result = h / HOUR 将展开为 result = h /365*24
在没有括号的情况下,先执行除法运算,再执行乘法运算,这将导致与预期不同的结果。
为了避免这种优先级问题,建议在宏定义中加上括号,即 #define HOUR (365*24)
这样可以确保在展开宏时保持正确的运算顺序。