C++中的min和max函数的问题.写过如下一个表达式:DW-查字典问答网
分类选择

来自林瑾的问题

  C++中的min和max函数的问题.写过如下一个表达式:DWORDdwMilliseconds=min(max(0,(int)(1000*(fT1-0.05f+fT2))),20);结果某些情况下,dwMilliseconds会等于0xFFFFFFFF,谁能告诉我这是为什么?我有max限制,使得返回

  C++中的min和max函数的问题.

  写过如下一个表达式:

  DWORDdwMilliseconds=min(max(0,(int)(1000*(fT1-0.05f+fT2))),20);

  结果某些情况下,dwMilliseconds会等于0xFFFFFFFF,谁能告诉我这是为什么?我有max限制,使得返回值不会为负数,又有min限制,使得返回值不大于20,怎么会有0xFFFFFFFF的出现呢?

1回答
2020-05-18 21:51
我要回答
请先登录
丁承君

  首先确定你的min和max是标准库里面的,因为Win32头文件windef.h中,也定义了min和max,而windef中的是宏,不是函数.如果是宏的话,你这么复杂的表达式嵌套就可能出现问题.

  如果是在Windows工程中,你可以把min和max换成_MIN和_MAX试试,这俩一般情况下代表C++库中的min和max.

  下来你可以在每个参数前面都加上适当的cast试试,防止模版推导错误.不过我觉得这里不会推导错误才是.

2020-05-18 21:52:11

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •