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 triangle.c”它会产生一个警告。

于 2013-04-14T02:16:43.987 回答