C/C++中宏定義加不加括號(hào)的區(qū)別?
2023-06-13 16:56 作者:跟Tom學(xué)編程 | 我要投稿
在 C/C++ 語言中,`#define` 是用來定義預(yù)處理宏的指令。
宏定義的目的是為了在代碼中替換一些常量或表達(dá)式。
`#define HOUR 365*24`
表達(dá)式 `result = h / (HOUR)` 將展開為 `result = h / (365*24)`。由于括號(hào)的存在,先計(jì)算 `(365*24)`,再執(zhí)行整數(shù)除法。
表達(dá)式 `result = h / HOUR` 將展開為 `result = h /365*24`。
在沒有括號(hào)的情況下,先執(zhí)行除法運(yùn)算,再執(zhí)行乘法運(yùn)算,這將導(dǎo)致與預(yù)期不同的結(jié)果。
為了避免這種優(yōu)先級(jí)問題,建議在宏定義中加上括號(hào),即 `#define HOUR (365*24)`
這樣可以確保在展開宏時(shí)保持正確的運(yùn)算順序。
標(biāo)簽: