C/C++中宏定义加不加括号的区别?
在 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)
这样可以确保在展开宏时保持正确的运算顺序。
编程学习交流群 639076909:有问题请加群咨询
编程一对一辅导 https://tomcode.taobao.com/
课程免费试学:http://edu.tompeixun.com/