C言語 switch文について
C言語初心者です。
以下のようにC言語でプログラムを書いてみたのですが、
一つの入力に対して、対応するcase文に加えてdefault部の内容も表示されてしまいます。
(aを入力すると day before yesterday と day after tomorrowが表示されるような感じです)
i,j,k などを使ってどう実行されているかを調べると、どうやら一回の入力に対して二回switch部を回っているようです。
そうにしろなぜaに対してdefaultへ飛ぶのか理解できませんが・・
また、最初の宣言をchar から int にして(caseは、case 1とかに適当に変えて)やると、正常に動くのも不可解です。
どうなっているんでしょうか・・
どなたかご教授願えると幸いです。よろしくお願いいたします。
#include <stdio.h>
int main(void)
{
char n;
int i=0,j=0,k=0;
k++;
while(scanf("%c",&n),n!='E'){
i++;
switch(n){
case 'a':
puts("day before yesterday");
break;
case 'b':
puts("yesterday");
break;
case 'c':
puts("today");
break;
case 'd':
puts("tomorrow");
break;
default:
puts("day after tomorrow");
break;
j++;
}
}
printf("%d\n",i);
printf("%d\n",j);
printf("%d\n",k);
return 0;
}
お礼
回答ありがとうございます! ! 「switchと言う単語使うなら」どう言えばいいのかな?と思っていたので、まさに尋ねたい回答をいただけました! ”ちょっとぎこちない感じ”というのもアメリカ生活の長いGさんならではの”教え”ですね! どういうのが”ちょっとぎこちない感じ”なのかつかめないので、ひとこと付け加えていただけると、とても勉強になります。 ありがとうございました。