函数在C中返回意外

PPJ*_*ack -1 c

目标:比较输入的两个整数并输入较小的整数.如果两个整数相等,则程序发出警告并启动新循环.

平台:Visual Studio 2012.

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int get_lesser(int a , int b);
int main(void)
{
    int a , b;
    printf("1: Enter two integers: ");
    while(scanf("%d%d" , &a , &b) == 2)
    {
        printf("THe smaller of the two integers entered is %d.\n" , get_lesser(a , b));
        printf("2: Enter two numbers: ");
    } 
    system("pause");
    return 0;
}

int get_lesser(int a , int b)
{
    if(a == b)
        printf("The two integers equal.\n");
    else if(a > b)
        return b;
    else
        return a;
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个function-get_lesser.

我不明白的是:每当我输入两个相同的整数时,我会被告知两者中较小的一个是24. 24来自哪里?谢谢.

Sad*_*que 6

因为你不在这里退货:

if(a == b)
        printf("The two integers equal.\n");
Run Code Online (Sandbox Code Playgroud)

如果a > b这将返回b:

else if(a > b)
        return b;
Run Code Online (Sandbox Code Playgroud)

如果a < b这将返回a:

else
    return a;
Run Code Online (Sandbox Code Playgroud)

但是这个语句不会从get_lesser函数中返回任何内容

if(a == b)
    printf("The two integers equal.\n");
Run Code Online (Sandbox Code Playgroud)

更好的比较方法是:

int get_lesser(int a , int b)
{
    if(a == b)
        return 0; //Equal args
    else if(a > b)
        return 1; //first arg is greater
    else
        return -1; //second arg is greater
}
Run Code Online (Sandbox Code Playgroud)

现在使用返回值来检查返回的内容 - 注意 - 您的参数顺序在这里很重要.