<分区>
有如下代码:
short a = 5;
short b = 15;
short c = 25;
short d = std::min(a, b);
short e = std::min(a, b-c); // Error
最后一行无法编译,声称没有匹配参数“short,int”的 min() 重载。
出现这种情况的原因是什么? 我知道 b-c 的结果可能不再适合做空。但是,如果我使用 INT,那将是相同的,并且它不会自动形成 LONG 或任何强制执行它适合的东西。
只要我确定得到的数字永远不会超过SHORT的范围,我用static_cast<short>(b-c)
是安全的,对吧?
非常感谢!