在这种情况下,最小和最大根本不起作用?
min and max simply doesn't work in this case?
所以下面是有效的代码。发布时没有任何更改。X和Y值必须介于0和1024之间。styleSize为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);
我得到了loffx和loffy 1034、1029、-5、-2,各种各样的未经最大和最小切割的纤维
是不是有什么我不知道的C++编译器,或者有什么愚蠢的错误?
确保您实际使用的是<algorithm>
中的min
和max
函数,而不是其他地方定义的一些宏。例如,Windows标头windef.h
定义max
如下:
#define max(a,b) (((a) > (b)) ? (a) : (b))
这在代码中不起作用,因为它可能会对每个参数求值两次,而rand
每次都会返回不同的结果。
尝试在预处理后查看源代码,看看您是否在使用宏。在包含任何标头之前,可以通过定义NOMINMAX
来关闭Windows宏。
相关文章:
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- 为什么在这种情况下,前向声明不起作用?
- 为什么 std::void_t 在这种情况下不起作用
- 为什么在这种情况下 boost::recursive_wrapper 不起作用
- 为什么在这种情况下创建临时实例不起作用?
- 为什么SFINAE在这种情况下不起作用?
- 为什么在这种情况下转发引用不起作用?
- 在这种情况下,过载不起作用
- 为什么模板论点不能在这种情况下推导
- 请帮助我理解为什么SFINAE在这种情况下不起作用
- 为什么#ifndef在这种情况下不起作用
- 为什么c_str在这种打开(文件名)的情况下不起作用
- 在这种情况下__declspec( align( # ) ) 不起作用
- 为什么cvPutText在这种情况下不起作用?
- 在这种情况下,最小和最大根本不起作用?
- 内联扩展可能不起作用的情况
- 为什么贪婪的方法在这种情况下不起作用?
- 为什么 std::function<boost::any ()> 在这种情况下不起作用?
- 为什么在这种情况下"自动"不起作用?
- 为什么多态性在这种情况下不起作用