gpt4 book ai didi

c++ - 从宏函数中获取错误值

转载 作者:行者123 更新时间:2023-11-28 00:16:14 25 4
gpt4 key购买 nike

最近我在研究宏,但遇到了一个非常简单的问题。这是我的代码:

#include <iostream>

#define abs(A) (A<0)? -A:A;

using namespace std;

int dis(int x, int y)
{
return abs(x-y);
}
int main()
{
cout<<dis(2,4);
}

基本上abs()取给定值的绝对值,然后计算距离。但在这种情况下,它给出输出 -6 而不是 2。

最佳答案

这是因为您的宏将被评估的方式,即在代码编译过程的预处理器阶段,return abs(x-y) 将更改为:

return abs(x-y)
(A<0) -> -A
(2-4) < 0 = -2 -> -2-4 = -6

您应该通过将宏变量括在方括号中来更改宏的定义(更好的解决方案):

#define abs(A) ((A)<0) ? -(A):(A);

或将您的代码更改为:

int dis(int x, int y)
{
int res = x-y;
return abs(res);
}

请注意还有一个abs() C 标准库中的函数。

关于c++ - 从宏函数中获取错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30148815/

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