use*_*382 2 c++ pointers conditional-statements
以下代码输出第二个数字作为最大值.如果您需要任何其他信息,请告诉我.
#include <iostream>
#include <cstdlib>
using namespace std;
double *ComputeMaximum(const double *Max, const double *Min);
double *ComputeMaximum(const double *Max, const double *Min)
{
return ((double *)((&Max > &Min) ? Max : Min));
}
int main(void)
{
double *max;
double Initial, Secondary;
cout << "Enter the number followed by space then another number: ";
cin >> Initial;
cout << "\nIn-" << Initial;
cin >> Secondary;
cout << "\nSe-" << Secondary;
//cout >> "Of " >> Inital >> "and " >> Secondary;
//cout >> "the maximum is " >>
max = ComputeMaximum((double*)&Initial,(double*)&Secondary);
cout << "\nmax" << *max;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
下一个代码输出第一个数字作为最大值
#include <iostream>
#include <cstdlib>
using namespace std;
double *ComputeMaximum(const double *Max, const double *Min);
double *ComputeMaximum(const double *Max, const double *Min)
{
return ((double *)((Max > Min) ? Max : Min)); // Here is the difference(& missing)
}
int main(void)
{
double *max;
double Initial, Secondary;
cout << "Enter the number followed by space then another number: ";
cin >> Initial;
cout << "\nIn-" << Initial;
cin >> Secondary;
cout << "\nSe-" << Secondary;
//cout >> "Of " >> Inital >> "and " >> Secondary;
//cout >> "the maximum is " >>
max = ComputeMaximum((double*)&Initial,(double*)&Secondary);
cout << "\nmax" << *max;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
做错了什么?我只需要最大值,而不是第二个或第一个输入.我得到了答案.谢谢你们.
这里是:
#include <iostream>
#include <cstdlib>
using namespace std;
double *ComputeMaximum(const double *Max, const double *Min);
double *ComputeMaximum(const double *Max, const double *Min)
{
return (double*)((*Max > *Min) ? Max : Min);
}
int main(void)
{
double *max;
double Initial, Secondary;
cout << "Enter the number followed by space then another number: ";
cin >> Initial;
cout << "\nIn-" << Initial;
cin >> Secondary;
cout << "\nSe-" << Secondary;
//cout >> "Of " >> Inital >> "and " >> Secondary;
//cout >> "the maximum is " >>
max = ComputeMaximum(&Initial, &Secondary);
cout << "\nmax" << *max;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你在比较地址.正确的方法是:
double *ComputeMaximum(const double *Max, const double *Min)
{
return *Max > *Min ? Max : Min;
}
Run Code Online (Sandbox Code Playgroud)
你的版本:
(Max > Min)
Run Code Online (Sandbox Code Playgroud)
比较指针本身,和
(&Max > &Min)
Run Code Online (Sandbox Code Playgroud)
比较指针的地址,这又是错误的.
此外,您不需要指针,并注意std::max
您可以使用指针.
double *ComputeMaximum(const double *Max, const double *Min)
{
return *Max > *Min ? Max : Min;
}
Run Code Online (Sandbox Code Playgroud)
请注意,我用的*Max
和*Min
,而不是&Max
和&Min
,即提领,未服用地址!另请注意,double*
对于已具有所需类型的表达式,您需要进行大量不必要的强制转换.一个exaple是你的ComputeMaximum函数体.另一个例子
max = ComputeMaximum((double*)&Initial,(double*)&Secondary);
Run Code Online (Sandbox Code Playgroud)
因为Initial
并且Secondary
是类型double
,&Initial
并且&Secondary
是类型double*
所以绝对不需要丑陋的不必要的演员.只是用
max = ComputeMaximum(&Initial,&Secondary);
Run Code Online (Sandbox Code Playgroud)
同样在其他地方.
我强烈建议你阅读一本关于C++的好书.