确定2个数字是否=,>的函数。或者<

时间:2015-10-30 16:29:24

标签: c++ function

我有一个关于确定某个数字是>=还是<而不是另一个数字的函数的问题。

如果我有例如:

 int fun(int a, int b)
 {
    if (a > b)
        return a;
    else
        if (b > a)
            return b;
        else
            return 0
 }

(我不想使用与用户交互的任何cout。 现在,如果我给出2个数字,它会给我ab0。但是,例如,如果放入函数a = -1b = 0,即使2个数字不相等,函数也会明确返回0

是的,如果2个数字相同,我可以在调用函数之前检查。或者我可以使用变量来查看我在哪种情况下,例如:

int fun(int a, int b)
{
    int k = 0;
    if (a > b)
        return k;
    else
        if (b > a)
            return k+1;
        else
            return k+2
}

但所有这些解决方案都不那么优雅。有没有办法区分0 int与另一个?{1}} <?php require('fpdf.php'); class PDF extends FPDF{ function Header(){ $this->Image('img/oet.png',10,6,30); $this->SetFont('Helvetica','B',25); $this->Cell(55); $this->Cell(100,10,"TITLE",0,0,'C'); $this->SetFont('Helvetica','B',18); $this->Ln(10); $this->Cell(55); $this->Cell(100,10,"SUBTITLE",0,0,'C'); $this->Ln(20); } function Footer(){ $this->SetY(-15); $this->SetFont('Times','I',8); $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); } function file_newname($filename){ if($pos = strrpos($filename, '.')) { $name = substr($filename, 0, $pos); $ext = substr($filename, $pos); }else{ $name = $filename; } $newpath = 'docs/'.$filename; $counter = 0; while (file_exists("docs/")) { $filename = $name .'_'. $counter . $ext; $newpath = "docs/".$filename; $counter++; } $this->Output("docs/".$filename); } } $pdf = new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Times','',12); for($i=1;$i<=10;$i++){ $pdf->Cell(0,10,'Printing line number '.$i,0,1); } $pdf->Output(); $pdf->file_newname(date("Ymd").".pdf"); ?> ?或者在任何情况下都有一种方法可以确保在这种情况下返回值来自给定点?

2 个答案:

答案 0 :(得分:2)

else内的语句返回时,您不需要if。我还会返回具有实际意义的东西,而不仅仅是一个int。例如:

enum Relationship { LessThan = -1, Equal, GreaterThan};

    if(a==b)
        return Relationship::Equal;
    if(a>b)
        return Relationship::GreaterThan;
    return Relationship::LessThan;

总的来说,我可能不会费心去写这样的功能,因为管理这个三重输出似乎比它值得付出更多的努力,但我认为这是一种练习。

答案 1 :(得分:0)

您可以使用指针

 int* fun(int *a, int *b)
 {
    if (*a > *b)
        return a;
    else
        if (*b > *a)
            return b;
        else
            return NULL
 }

如果返回值不为NULL,则可以从返回值

中提供最大数量