让我们说我定义一个宏:
#define MAX(x,y) ((x)>(y)?(x):(y))
Run Code Online (Sandbox Code Playgroud)
如果我打电话MAX(I++,J++)会怎么样?
我无法理解为什么答案不会像预期的那样.
宏只适用于预处理器.这是C编译器编译的内容:
(((I++)>(J++))? ((I++):(J++)))
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,如果我比J大,那么我将增加两次并且J 增加一次,否则反之亦然.
你的宏甚至都不正确.这里的括号外层是错误的,这将导致编译错误:
((I++):(J++))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |