ここから本文です

以下のソースコードで、配列の初期化の時に、前置インクリメントを使っているのは...

lig********さん

2018/10/1401:00:15

以下のソースコードで、配列の初期化の時に、前置インクリメントを使っているのはなぜですか?
後置じゃダメなのですか?

#include <stdio.h>
#define NALPHA 26 //alphabetの種類
int main(){
int count[NALPHA];
int c,i;
for(i = 0; i < NALPHA; ++i){
count[i] = 0; //初期化
}

while((c = getchar()) != EOF){
if((c >= 'a') &&(c <= 'z') ){
count[c-'a']++;
}
}

for(i = 0; i < NALPHA; i++){
printf("%c:%d\n",'a'+i, count[i]);
}
return 0;
}

閲覧数:
51
回答数:
3

違反報告

ベストアンサーに選ばれた回答

lon********さん

2018/10/1401:15:51

for(i = 0; i < NALPHA; ++i) の ++i のことですね?
前置でも後置でもどっちでもいいです。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

n2q********さん

2018/10/1410:30:14

『前置インクリメントを使っているのはなぜですか?』

むしろ自然だと思います。


『後置じゃダメなのですか?』

後置でも良いです。



《参考意見》


「前置インクリメント」

① i を +1 する。
② その i の値を取得する。

「後置」

① i の現在値を取っておく。
② i を +1 する。


そして…

③ 捨てる。

for (;;++i) {}
for (;;i++) {}

この場合は取得した値は使われていません。捨ててるんですね。なので、どちらでも同じというわけ。

プロフィール画像

カテゴリマスター

hid********さん

2018/10/1401:35:31

ループ処理後のタイミングなんで、
前置も後置も論理的にお構い無し!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる