は一緒に各変数を初期化し、導入のような、より効率的にこのコードを書くことができます。
がアレイを使用:
int numbers[3] = {0};
を上記線は、三のint
Sを定義し、0
にそれらのすべてを初期化します。あなたのコードは、「最初」を参照してくださいする必要があるすべての理由で
numbers[0]
場合は、「二」と「第三」列挙を作成する:第1回の使用にアクセスするには
配列の要素に次のようにアクセスします。
enum Numbers
{
FirstNumber,
SecondNumber,
ThirdNumber
}
次にth第二番号にアクセスするための電子のソースコードは次のようになります。
numbers[SecondNumber]
あなたはNumbers
がenum Numbers
のエントリ数をたどるの大きさを持っている上記の例を修正好きにしたい場合は、次のとおりです。
enum Numbers
{
FirstNumber,
SecondNumber,
ThirdNumber,
MaxNumbers
}
、その後
int Numbers[MaxNumbers] = {0};
のような数字を定義あなたは今、ユーザーが定義した番号の入力を促し定義することができ、同じ概念に続き3210
:
const char * prompts[MaxNumbers] = {
"firstNumber",
"secondNumer",
"thirdNumber"
};
今、すべてはまた、大幅に入力関数の周りにループ(の代わりに符号化することにより、ソースコードの行を減らすために整備されています各番号について多かれ少なかれ同じもの):
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
printf("Please enter %s:\n", prompts[n]);
scanf("%d", &Numbers[n]);
}
足す::
で
読みます最後の注意と同様に
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
printf("Please enter %s:\n", prompts[n]);
scanf("%d", &Numbers[n]);
sum += Numbers[n];
}
、およびscanf()
は非常によく失敗するかもしれないことに注意して、自分の研究のために左:
int sum = 0;
for (enum Numbers n = 0; n < MaxNumbers; ++n)
{
sum += Numbers[n];
}
printf("The sum is: %d\n", sum);
二つのループは、しかし、一つにマージすることができます。これは戻り値でこれを示します。このコードは、読み込み可能な障害を検出し、それに応じて動作します。
'int firstnumber = 0;' ...等 –
定義時に変数を初期化して3行を保存することができます。また、 'sum'変数を全く持たないことで別の2行を保存し、' printf'呼び出しで追加することもできます。しかし、それは生成されたコードをより効率的にするでしょうか?いいえ、それは叶わない。 –
int firstNumberとfirstNumber = 0を1行に書く方法 –