今日、このコードを読んで、Cプログラミング言語のコースでいくつかの学生を教えていました。 演習では、2つの機能を実装するよう求めました。最初のスキャンはユーザーからの入力をスキャンし、2番目のスキャンは前にスキャンしたものを表示します。 私が出会ったコードは以下の通りです:このコードは矛盾に満ちているがgccの下のCコードでの不思議な動作4.4.3
#include <stdio.h>
void myInput(int i,int n)
{
int cpt;
int tab[n];
for (cpt=0; cpt<n; cpt++)
{
printf("Enter a number :");
scanf("%d",&i);
tab[cpt]=i;
}
}
void myDisp (int n)
{
int tab[n];
int cpt;
for (cpt=0; cpt <n; cpt++)
{
printf("%d ", tab[cpt]);
}
}
int main()
{
int n; int i;
printf(" Entrer the numbers of elements you want: \n");
scanf("%d \n",&n);
int tab[n];
myInput(i,n);
myDisp(n);
}
、それは実際にはgcc 4.4.3の下で動作しません:それは、入力された数値を表示します! !!!!! 誰でもこれらのコードがどのように機能するのか理解していますか?
ありがとうございました
将来参照するには、コードを強調表示してCtrl + Kを押すか、コードをフォーマットするために「0 1」などのボタンをクリックしてください。ありがとう。 – birryree
これは私が見ることのできる、完全に有効なC99です。 – Electro
@Electro、@birryree:彼は、おそらく 'myDisp'で初期化されていない変数' tab'の使用を見ています。 – Thanatos