コンパイル時の引数の型の不整合のチェックについて
C言語入門 (ASCII SOFTWARE SCIENCE Language)に
できるだけ ANSI 規格に準拠して関数はプロトタイプ宣言をするようにしましょう。プロトタイプ宣言がされている関数の引数については、それが正しい型であるか否かをコンパイラがチェックするので、引数の型の不整合をコンパイル時に検出できます。
と書いてあったので
int factorial(int);
int main(void)
{
char x=5;
printf("%d!=%d",x,factorial(x));
return 0;
}
int factorial(int n)
{
if (n==1)
return (1);
else
return (n*factorial(n-1));
}
と書いてgccでコンパイルしたんですが、コンパイル時にエラーが出ませんでした。
(factorialはintなのに、実引数のxはchar型)
gccでは引数の型の不整合をチェックしないのでしょうか?
(gccのバージョンは4.7.2です)