我喜欢使用宏来让我的代码更快,尤其是执行从 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)
唯一的不同是他们添加了一个括号。我不知道他们为什么要添加 (),我得到编码器的答复,它说目的是使其更安全。但我没有得到他进一步的解释,我在网上也找不到相关的东西。
我只是尝试做嵌套循环,如果不添加 () 就可以了。
当我长时间使用宏时,我正在添加 () ,但它没有显示任何不同。
我很好奇“更安全的程序”的确切含义,并且我想了解更多有关使用宏的风险(例如难以调试?)。
他们可以使用优先级低于的n运算符的表达式。<
For(i, a ? 10 : 20)
Run Code Online (Sandbox Code Playgroud)
逻辑被破坏了,这个不带括号的是:(i < a) ? 10 : 20,这总是正确的并导致无限循环。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |