【发布时间】:2012-03-14 12:21:30
【问题描述】:
有什么方法可以让这个函数更优雅吗?我是 C++ 新手,我不知道是否有更标准化的方法来做到这一点。这可以变成一个循环,这样变量的数量就不会像我的代码那样受到限制吗?
float smallest(int x, int y, int z) {
int smallest = 99999;
if (x < smallest)
smallest=x;
if (y < smallest)
smallest=y;
if(z < smallest)
smallest=z;
return smallest;
}
【问题讨论】:
-
哈哈,如果没有一个值小于 99999 怎么办?哈。
-
@jogojapan 或比以
INT_MAX开头更好(或std::numeric_limits<int>::max()只需从第一个数字开头... -
由于 C++ 上下文,我不确定关闭它是否是个好主意。我想在引用的 dup 中看到一般性的讨论;而且我还希望看到有关模板和元编程的 C++ 讨论;以及与
constexpr的 C++11 讨论。这看起来像是一个更好的 dup,即使它是max而不是min: Most efficient way to find the greatest of three ints。它看起来更好,因为它特定于 C++。但它缺乏对模板、元编程和constexpr的良好处理。 -
我只是将最小值设置为第一个数字。不用担心溢出或选择最大的数字。
-
@L7ColWinters 是为了问题的目的。