2011-09-25 4 views
0

私は(C帳から取られる)次のコードを持っている:私は上記のコードを実行するとCase 5はこのSwitchステートメントでどのように実行されましたか?

#include<stdio.h> 

int main() 
{ 
    int k=4,j=0; 

    switch(k) 
    { 
    case 3: 
    j=300; 

    case 4: 
    j=400; 

    case 5: 
    j=500; 
    } 

    printf("%d",j); 
} 

、私は500として出力を得るが、私はそれが400ことが期待、できることがある理由を誰も400ではなく、500が印刷されましたか?

(私はC言語で初心者だと私はそれでエラーが何であるかを見つけ出すことができませんでした!)

+1

コードをインデントしてください! – ThiefMaster

答えて

5

あなたはケースブロックの最後にbreak;する必要があります。あなたの例を打破する必要が

#include <stdio.h> 
int main() 
{ 
    int k = 4, j = 0; 
    switch(k) 
    { 
     case 3: 
      j = 300; 
      break; 
     case 4: 
      j = 400; 
      break; 
     case 5: 
      j=500; 
      break; 
    } 
    printf("%d\n", j); 
} 
+0

雅!初心者として何の間違い!!! –

5

それ以外の場合は、トラフ他の例を実行します:

int main() 
{ 
    int k=4,j=0; 
    switch(k) 
    { 
    case 3: 
     j=300; 
     break; 
    case 4: 
     j=400; 
     break; 
    case 5: 
     j=500; 
     break; 
    } 
    printf("%d",j); 
} 

だからあなたの場合には、それはj=400を実行しなかったし、その後case 5に行ってきました。そしてj=500

3
を実行します

ケース4の後にbreakステートメントがないので、ケース5に実行が「フォールスルー」します。