3

エラーをスローせずに、どこの真ん中 (関数定義の中間) に整数宣言があるこのコードはなぜですか?

1) 構文的に正しいのはなぜですか。
2) そうすることの用途は何ですか?


#include <stdio.h>  
void func(int, int);
int main()
{
     int a, b;
     a = 10;
     b = 20;
     func(a, b);

     return 0;
}
void func(i, j)
int i,j;                  //why does this doesn't throw error.
{
     printf("a = i = %d\nb = j = %d\n", i, j);
}
4

2 に答える 2

3

TL;DR - K&R スタイル。

あなたのコードで

void func(i, j)
int i,j; {

むかしはそれ(唯一の) 有効な構文だったので、エラーをスローしません。

現在は無効ではありませんが、もう使用されていません。

必要に応じて、 K&R スタイルの構文について詳しく読むことができます。

于 2016-02-19T17:33:19.793 に答える
1

これ

void func(i, j)
int i,j; //declare types of arguments
{
  //function body
}

K&R構文と呼ばれます。廃止されましたが、のような一部の C プロジェクトではまだ使用されていbashます。

于 2016-02-19T17:36:14.037 に答える