int main()
{
int marks[3];
int counter=0;
for (i in marks){
printf(marks[i];
counter=counter+1;
}
return 0
}
私はPythonを知っていますが、Cは非常に新しいです。構文はわかりませんが、配列を作成して配列を作成し、配列内の各変数を出力しようとしています。私は何が間違っているのですか?
#include <stdio.h>
#define NUM_MARKS 3
int main()
{
int marks[NUM_MARKS];
/* marks contains all undefined data */
int counter=0;
int i;
for (i = 0; i < NUM_MARKS; i++){
printf("%d\n", marks[i]);
counter++;
}
return 0;
}
for
これは、Cでループを実行する方法ではありません。私の例を参照してください。そして、グーグルまたはSOを検索します。printf
。;
の後にセミコロンを逃しましたreturn 0
。printf
最初の引数としてintではなく文字列を取ります。
int main()
{
int marks[] = {1, 2, 3};
int i;
for (i = 0; i < 3; i++){
printf("%d", marks[i]);
}
return 0;
}
for (int i = 0; i < 3; i++)
C99サポートを前提としています。C99のサポートがない場合、
int i;
for (i =0; i < 3; i++)
NUM_MARKS
3の代わりに使用することもできます。
enum { NUM_MARKS = 3 };
int marks[NUM_MARKS];
また:
enum { NUM_MARKS = sizeof(marks) / sizeof(marks[0]) };
最終的な結果は同じです。
Cには、Pythonのようにforeachタイプのループはありません。言語Aが言語Bのように機能すると仮定することはできません。必要なもの:
for(int i = 0; i < sizeof(marks) / sizeof(marks[0]); ++i) {
printf("%d\n", marks[i]);
}
VSで作業している(そして実際にはCとしてコンパイルしている)場合は、関数の先頭ですべての変数を宣言する必要があります。C99はこれを変更しましたが、残念ながらMSはC99をサポートしません。