C++中的min和max函数的问题.
写过如下一个表达式:
DWORD dwMilliseconds = min(max(0,(int)(1000*(fT1 - 0.05f + fT2))),20);
结果某些情况下,dwMilliseconds会等于0xFFFFFFFF,谁能告诉我这是为什么?我有max限制,使得返回值不会为负数,又有min限制,使得返回值不大于20,怎么会有0xFFFFFFFF的出现呢?
人气:226 ℃ 时间:2019-10-09 11:41:17
解答
首先确定你的min和max是标准库里面的,因为Win32头文件windef.h中,也定义了min和max,而windef中的是宏,不是函数.如果是宏的话,你这么复杂的表达式嵌套就可能出现问题.
如果是在Windows工程中,你可以把min和max换成_MIN和_MAX试试,这俩一般情况下代表C++库中的min和max.
下来你可以在每个参数前面都加上适当的cast试试,防止模版推导错误.不过我觉得这里不会推导错误才是.
推荐
- 输入20个数,求其中最大数和最小数.要求分别用循环结构和调用MATLAB的max函数、min函数来实现.
- 定义:max{a,b,c}为实数a,b,c中较大者:min{a,b,c}为实数中的较小者,在开区间(0,3)上的函数f(x),g(x)
- 设函数f(x)=min{x+2,4-x},则f(x)max
- 一支长为150m的队伍匀速前进,通信兵从队尾前进300m后赶到队前传达命令后立即返回,当通信兵回到队尾时,队伍已前进了200m,则这个过程中通信兵的路程为多少?
- 模仿《在山的那边》写一首小诗,要利用托物言志的写法!
- 能证明乙醇分子中有一个羟基的事实是( ) A.乙醇能溶于水 B.0.1mol乙醇与足量钠反应生成0.05mol氢气 C.乙醇能脱水 D.乙醇完全燃烧生成CO2和H20
- 5.阅读下面的故事,从内容和人生两方面提炼出“年轻人”明白的哲理.各用一句话表述,每句不超过30个字.(3分) 一位屡屡失意的年轻人去请教一位得道高僧.高僧明白他的来意后,便在他面前放了两 只装满茶叶的杯子,他用温开水冲了一杯,叫年轻人喝,
- 翻译:我们将努力执行我们的计划.(carry out)
猜你喜欢