• ベストアンサー

インクリメントしてくれません

配列mousの各要素を配列tousと照らし合わせ、マッチしたら変数countにインクリメントし、何回マッチングしたかを返す関数を作りました。 でも、なぜか1回しかインクリメントしてくれません。 確認のため試しにcount++部分をputf("テスト表示")に置き換えた場合マッチングした回数だけ「テスト表示」表示されました。 じゃあなぜ、変数countは一回しかインクリメントされないのでしょうか? #include <stdio.h> int DataMatch(int *, int *); void main() { int mous[6] = { 1, 15, 12, 23, 33, 42}; int tous[7] = {10, 15, 19, 23, 33, 42, 11}; int test; test = DataMatch(mous, tous); printf("%d%\n", test); } ////////////////////////////////////////////////// int DataMatch(int *buffer1, int *buffer2) { int i, j, count; for(i = 0; i < 6 ; i++ ){ for(count = 0, j = 0; j < 6; j++){ if(buffer1[i] == buffer2[j]){ count++;//インクリメントしてくれない! break; } } } return count; }

質問者が選んだベストアンサー

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.2

count=0 は、iのループの内側に書いてありますから、iが増えるたびに0になります。 ですから、iが0から順に増えていって5になるまでの間に、countは毎回 0 に戻ります。 そのため、iの6回目のループで i=5 のとき、mous[5]とtous[5]の両者が42でマッチしたときの1回だけを数えています。

nVIDIA
質問者

お礼

for文の落とし穴にはまっていたようです。 ありがとうございました。

その他の回答 (1)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

for(count = 0, j = 0; j < 6; j++){   ~~~~~~~~~~ for分でcountを初期化しているからですよ

nVIDIA
質問者

お礼

for文の落とし穴にはまっていたようです。 ありがとうございました。

関連するQ&A

専門家に質問してみよう