我的程序如下
#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
一切都好看。这不应该在某处产生错误或警告吗?
答案 0 :(得分:4)
在C89和预标准C中,如果您没有指定类型,则假定为int
。
另见Why doesn't the removal of int
keyword generate any error?。
答案 1 :(得分:2)
当我在gcc
中打开警告进行编译时,我看到了这个警告:
warning: type of 'num' defaults to 'int' [enabled by default]
int getTriangle(num) {
我使用的标志是-Wall -W -pedantic
。默认情况下启用警告可以为您节省很多问题。
答案 2 :(得分:1)
尝试使用“gcc -std = c99 triangle.c”会产生警告。