Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在这种情况下,min和max根本不起作用?_C++ - Fatal编程技术网

C++ 在这种情况下,min和max根本不起作用?

C++ 在这种情况下,min和max根本不起作用?,c++,C++,这是有效的代码。张贴它没有任何变化。 X和Y值必须介于0和1024之间。大小为1024 //为了X int loffx=accurate(curphisobj->x) + (rand() % 100) - 50; //some math, doent matter loffx=max(loffx,1); loffx=min(loffx,tyleSize); //对于Y int loffy=accurate(curphisobj->y) + (rand() % 100) - 50;

这是有效的代码。张贴它没有任何变化。 X和Y值必须介于0和1024之间。大小为1024

//为了X

int loffx=accurate(curphisobj->x) + (rand() % 100) - 50; //some math, doent matter
loffx=max(loffx,1);
loffx=min(loffx,tyleSize);
//对于Y

int loffy=accurate(curphisobj->y) + (rand() % 100) - 50;
loffy=max(loffy,1);
loffy=min(loffy,tyleSize-3);
但如果我这样写:

int loffy=min(max(accurate(curphisobj->y) + (rand() % 100) - 50,1),tyleSize - 2);
int loffx=min(max(accurate(curphisobj->x) + (rand() % 100) - 50,0),tyleSize);
#define max(a,b)  (((a) > (b)) ? (a) : (b))
我得到了loffx和loffy 1034,1029,-5,-2,各种各样的名字没有被max和min切割


我有什么不知道的C++编译器,还是有一些愚蠢的错误?

确保你实际上是使用Max和max函数定义的max,像这样:

int loffy=min(max(accurate(curphisobj->y) + (rand() % 100) - 50,1),tyleSize - 2);
int loffx=min(max(accurate(curphisobj->x) + (rand() % 100) - 50,0),tyleSize);
#define max(a,b)  (((a) > (b)) ? (a) : (b))
这在代码中不起作用,因为它可能会对每个参数求值两次,而rand by design每次都会返回不同的结果


尝试在预处理后查看源代码,以查看是否正在使用宏。在包含任何标题之前,您可以通过定义NOMINMAX来关闭Windows宏。

请确保您实际使用的是defines max中的min和max函数,如下所示:

int loffy=min(max(accurate(curphisobj->y) + (rand() % 100) - 50,1),tyleSize - 2);
int loffx=min(max(accurate(curphisobj->x) + (rand() % 100) - 50,0),tyleSize);
#define max(a,b)  (((a) > (b)) ? (a) : (b))
这在代码中不起作用,因为它可能会对每个参数求值两次,而rand by design每次都会返回不同的结果


尝试在预处理后查看源代码,以查看是否正在使用宏。在包含任何标题之前,您可以通过定义NOMINMAX来关闭Windows宏。

最大和最小值的定义,也是准确的,您想做什么?。。您正在使用的任何名称空间,包括的任何文件?是否需要一个Claper函数?未显示其声明的类型的签名?这些是std::min和std::max吗?在第一个示例中,您说的是tileSize-3,但接下来您将其改为tyleSize-2。那是打字错误吗?不是。我随机选取一个像素,并从其位置使用256个像素。所以,如果y=1023和x1000,例如,我将得到图片之外的结果。所以我去掉了一些,但2或3并不重要。最大值和最小值的定义也很准确,你想做什么?。。您正在使用的任何名称空间,包括的任何文件?是否需要一个Claper函数?未显示其声明的类型的签名?这些是std::min和std::max吗?在第一个示例中,您说的是tileSize-3,但接下来您将其改为tyleSize-2。那是打字错误吗?不是。我随机选取一个像素,并从其位置使用256个像素。所以,如果y=1023和x1000,例如,我将得到图片之外的结果。所以我去掉了一些,但2或3个都不重要。@Magtheridon 96我给你投了更高的票。当我需要额外投票时,我会打电话给你。不是真的,心灵调试能力值得提升。它们也可以明确地说std::min和std::max,以确保获得标准库函数。@blastfurny:如果选择了错误的函数,它会给你一个编译器错误。此外,为了快速检查,在使用它们的最小值和最大值周围加上括号,即,。将最小值更改为最小值,将最大值更改为最大值;类似函数的宏后面必须跟第一个非空白字符,因此括号实际上禁用了宏。@Magtheridon96我支持你。当我需要额外投票时,我会打电话给你。不是真的,心灵调试能力值得提升。它们也可以明确地说std::min和std::max,以确保获得标准库函数。@blastfurny:如果选择了错误的函数,它会给你一个编译器错误。此外,为了快速检查,在使用它们的最小值和最大值周围加上括号,即,。将最小值更改为最小值,将最大值更改为最大值;类似函数的宏后面必须跟第一个非空白字符,因此括号实际上禁用宏。