-4

我正在尝试为函数最大值编写函数定义,它返回三个整数中的最大值。但它不是返回最大的。

这是我的代码:

int maximum( int x, int y, int z ) {
    int max = x;
    if ( y > max )
        max = y;

    if ( z > max )
        max = z;

    return max;
}

int main() {
    maximum(3, 2, 1);
    return 0;
}
4

1 回答 1

2

您调用的结果将maximum(3, 2, 1)被忽略(因为您没有使用该结果)。优化编译器可以随意忽略该结果,甚至可以避免调用maximum.

顺便说一句,我发现这max3将是一个更好的名称。

至少,您应该打印此类函数调用的结果。所以添加

   printf("max is %d\n", maximum(3, 2, 1));

在你之前return 0;main当然你需要#include <stdio.h>在你的源代码的开头)。

给新手的提示:总是printf用换行符结束格式字符串,\n否则调用fflush(NULL),否则你会得到令人不快的惊喜,因为stdout它是缓冲的!

你真的应该阅读更多关于编程(或关于用 C 语言编程)的材料。您应该在编译器中启用警告消息。你应该学习如何使用调试器。如果您使用的是 Linux,请使用调试器进行编译gcc -Wall -g并学习如何使用。gdb因此,如果您的源文件是max3homework.c,您将使用

gcc -Wall -g max3homework.c -o max3hw

命令,您将通过运行对其进行测试,然后通过运行./max3hw对其进行调试gdb max3hw,然后键入适当的命令到gdb.

于 2013-05-10T16:22:06.567 回答