gpt4 book ai didi

C++宏副作用

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:20 25 4
gpt4 key购买 nike

我不明白为什么结果会是 36。有人可以向我解释这里发生了什么以及预处理器做了什么吗?

#include <iostream>
#define QUADRAT(x) ((x) * (x))

using namespace std;

int main()
{
double no = 4.0;
double result = QUADRAT(++no);

cout << result;
return 0;
}

非常感谢:>

最佳答案

在该示例中,预处理器会将 QUADRAT(++no) 替换为 ((++no) * (++no))

这将增加 no 两次,如果不是因为两次增量之间没有序列点,那么您实际上会导致未定义的行为。您看到的任何输出都是有效的,因为没有人知道会发生什么。

关于C++宏副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856755/

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