0

私のプログラムは次のとおりです

#include <stdio.h>

int getTriangle(num) {
    if (num == 1) {
        return num;
    } else {
        return num + getTriangle(num - 1);
    }

}

int main() 
{
    int tri = getTriangle(7);
    printf("%i\n", tri);
    return 0;
}

関数 getTriangle で num の型を宣言しなかったために、うっかりミスを犯してしまいました。つまり、行は次のようになります。

int getTriangle(int num) {

ただし、コンパイルすると

make euler012
cc     euler012.c   -o euler012

そして走る

./euler012
28

すべてが正常に表示されます。これはどこかでエラーや警告を生成するべきではありませんか?

4

3 に答える 3

4

C89 および標準化前の C では、型を指定しないと、intと見なされました。

キーワードを削除してもエラーが発生しないのはなぜですか?intも参照してください。.

于 2013-04-14T02:10:47.170 に答える
2

警告をオンにしてコンパイルすると、次の警告が表示されgccます。

warning: type of 'num' defaults to 'int' [enabled by default]
   int getTriangle(num) {

私が使用しているフラグは-Wall -W -pedantic. デフォルトで警告をオンにすると、長期的には多くの問題を回避できます。

于 2013-04-14T02:10:49.603 に答える
1

「gcc -std=c99三角形.c」で試してみると、警告が生成されます。

于 2013-04-14T02:16:43.987 に答える