-4

3 つの整数の最大値を返す関数 maximum の関数定義を作成しようとしています。しかし、最大のものを返しているわけではありません。

これが私のコードです:

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 に答える