当前位置: > C++中的min和max函数的问题....
题目
C++中的min和max函数的问题.
写过如下一个表达式:
DWORD dwMilliseconds = min(max(0,(int)(1000*(fT1 - 0.05f + fT2))),20);
结果某些情况下,dwMilliseconds会等于0xFFFFFFFF,谁能告诉我这是为什么?我有max限制,使得返回值不会为负数,又有min限制,使得返回值不大于20,怎么会有0xFFFFFFFF的出现呢?

提问时间:2020-06-10

答案
首先确定你的min和max是标准库里面的,因为Win32头文件windef.h中,也定义了min和max,而windef中的是宏,不是函数.如果是宏的话,你这么复杂的表达式嵌套就可能出现问题.
如果是在Windows工程中,你可以把min和max换成_MIN和_MAX试试,这俩一般情况下代表C++库中的min和max.
下来你可以在每个参数前面都加上适当的cast试试,防止模版推导错误.不过我觉得这里不会推导错误才是.
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
版权所有 CopyRight © 2012-2019 超级试练试题库 All Rights Reserved.