gpt4 book ai didi

c++ - 类似函数的宏和奇怪的行为

转载 作者:太空狗 更新时间:2023-10-29 20:27:48 25 4
gpt4 key购买 nike

我已经开始阅读 Effective C++,并且在第 2 项中的某个时刻提到了以下内容:

// call f with the maximum of a and b
#define CALL_WITH_MAX(a, b) f((a) > (b) ? (a) : (b))

...

int a = 5, b = 0;
CALL_WITH_MAX(++a, b); // a is incremented twice
CALL_WITH_MAX(++a, b+10); // a is incremented once

Here, the number of times that a is incremented before calling f depends on what it is being compared with!

确实,如果我在 f 中使用简单的打印语句,第一次调用时会打印 7,但我终究无法弄清楚原因。我错过了一些明显的东西吗?

最佳答案

编译器会逐字逐句地用您传入的内容替换宏。所以你最终得到了

int a = 5, b = 0;
f((++a) > (b) ? (++a) : (b));
f((++a) > (b+10) ? (++a) : (b+10));

关于c++ - 类似函数的宏和奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com