2013-04-14 20 views
0

Моя программа выглядит следующим образомПочему следующая программа C компилируется без ошибок?

#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; 
} 

Я нечаянно сделал ошибку, не объявляя тип NUM в моей функции getTriangle. Другими словами, строка должна гласить:

int getTriangle(int num) { 

Однако, когда я компилирую

make euler012 
cc  euler012.c -o euler012 

и запустить

./euler012 
28 

Все кажется OK. Разве это не должно быть причиной ошибки или предупреждения?

ответ

2

Когда я компилирую с предупреждением включен в gcc Я вижу это предупреждение:

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

Это флаги, которые я использую являются -Wall -W -pedantic. Предупреждение, включенное по умолчанию, сэкономит вам много проблем в долгосрочной перспективе.

1

Попробуйте использовать «gcc -std = c99 triangle.c», это вызовет предупреждение.

Смежные вопросы