为什么使用宏时给变量添加括号更安全?#define For(i,n) for(int i = 0; i < (n); i++)

-4 c++ macros for-loop

我喜欢使用宏来让我的代码更快,尤其是执行从 0 到 n 的 for 循环。我这样做了:

 #define For(i,n) for(int i = 0; i < n; i++)
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但我看到其他人这样做:

 #define For(i,n) for(int i = 0; i < (n); i++)
Run Code Online (Sandbox Code Playgroud)

唯一的不同是他们添加了一个括号。我不知道他们为什么要添加 (),我得到编码器的答复,它说目的是使其更安全。但我没有得到他进一步的解释,我在网上也找不到相关的东西。

我只是尝试做嵌套循环,如果不添加 () 就可以了。

当我长时间使用宏时,我正在添加 () ,但它没有显示任何不同。

我很好奇“更安全的程序”的确切含义,并且我想了解更多有关使用宏的风险(例如难以调试?)。

S.M*_*.M. 5

他们可以使用优先级低于的n运算符的表达式。<

For(i, a ? 10 : 20)
Run Code Online (Sandbox Code Playgroud)

逻辑被破坏了,这个不带括号的是:(i < a) ? 10 : 20,这总是正确的并导致无限循环。