如何使用条件语句返回指针?

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)

Luc*_*ore 6

你在比较地址.正确的方法是:

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您可以使用指针.


Arm*_*yan 6

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++的好书.