Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 最小答案c++;_C++ - Fatal编程技术网

C++ 最小答案c++;

C++ 最小答案c++;,c++,C++,我是初学者,正在尝试理解如何计算数学函数,如果答案低于0,则将其设置为0。我知道我可以使用if语句,但这似乎是一种不好的做法,我找不到是否有更好的方法。我问这个是因为在Visual Basic中有Min函数,我很好奇C++中是否存在。 这里有一个例子 int a = 5; int b = -6; int answer = a + b; //Answer would be -1 at this point. if(answer < 0){answer = 0;} inta=5; int

我是初学者,正在尝试理解如何计算数学函数,如果答案低于0,则将其设置为0。我知道我可以使用if语句,但这似乎是一种不好的做法,我找不到是否有更好的方法。我问这个是因为在Visual Basic中有Min函数,我很好奇C++中是否存在。 这里有一个例子

int a = 5;
int b = -6;
int answer = a + b; 
//Answer would be -1 at this point.
if(answer < 0){answer = 0;}
inta=5;
int b=-6;
int-answer=a+b;
//此时的答案是-1。
如果(答案<0){answer=0;}
让我知道是否有一个更简单的方法来处理,也许是最小值函数

编辑:接下来,我将如何仅使用1个值执行max函数?例如
如果我想将答案与0进行比较,而不是a、b和0?

一个等价的声明是

int a = 5;
int b = -6;
int answer = std::max( a + b, 0 ); 

这是非常小的。总是有“内联ifs”:

int-answer=a+b;
答案=答案<0?0:答案;

我认为你的代码更好,更易读

你可以用很多不同的方法来做。这里有两种更直接的方法:

int answer1 = std::max(a + b, 0);
int answer2 = (a + b) < 0 ? 0 : (a + b);
int answer3 = (::abs(b) >= a && b < 0) ? 0 : (a + b);
你可以这样走 int-answer=(a+b)<0>0:(a+b)

或者你可以使用它的设备

if( (a + b) < 0 )
   answer = 0;
else 
   answer = a + b;
if((a+b)<0)
答案=0;
其他的
答案=a+b;

或十进制运算符:if()语句没有过时。实际上,您想要的函数是
max
,而不是
min
@donsiuch,这不一定是真的,很可能编译器将能够内联到OP:don't忘记
#include
以便能够使用
std::max
。我不会使用第二种解决方案,因为您将两次生成一个表达式,这并不明显较慢(没有优化)但是,如果与重载运算符结合使用,可能会带来很多麻烦。@Zaffy True,不过,我认为第一个解决方案足够简单,无论如何它都会是首选解决方案;)
int answer4 = std::max(a, 0);
int answer5 = (a > 0) ? a : 0;
int a = 5;
int b = -6;
int answer;
if( (a + b) < 0 )
   answer = 0;
else 
   answer = a + b;