2

次のプログラムを見てください。

int main()
{
    char a=65, ch ='c';
    printit(a,ch);
}

printit(a,ch)
{
    printf("a=%d   ch=%c",a,ch);
}

関数「printit()」で引数のデータ型を指定しなくても、結果はprintfに表示されます。gcc でコンパイルして実行すると、正解が表示されます。C では引数のデータ型を指定する必要はありませんか? 上記の場合に取られる引数のデフォルトのデータ型は何ですか?

4

2 に答える 2

3

C で想定される唯一のデフォルトのデータ型は、int上記のコードのとおりです。

C++ の新しいバージョンでは暗黙的なデータ型指定が禁止されており、新しい C++ コンパイラは上記のコードのコンパイルを拒否しています。

于 2009-06-22T12:10:58.063 に答える
1

のプロトタイプを指定していないためprintit()、コンパイラは暗黙の宣言を作成します。

int printit(int, int);

後でコンパイラがprintit()引数の型のない関数の定義を確認すると、その暗黙の宣言が使用されます。

これは非常に危険な手法です。基本的に、この関数の型チェックを禁止します。

于 2009-06-22T12:54:16.743 に答える