2016-12-18 14 views
0

と同じ場合、C-Free5.0で基本コードを作成しました。ステートメントがすべて表示されます。私はスイッチを使用するとエラーが発生します: 'per'は定数式に現れません、なぜエラーが出ますか?エラー:「変数は定数式では表示されません」

#include<stdio.h> 
#include<conio.h> 
int main() 
{ 
    int urdu=134; 
    int eng=112; 
    int isl=72; 
    int ps=58; 
    int maths=137; 
    int phy=128; 
    int chem=120; 
    int bio=115; 

    int total=(urdu+eng+isl+ps+maths+phy+chem+bio); 
    int per=(total*100)/1050; 

    printf("Urdu=    %d\n", urdu); 
    printf("English=   %d\n", eng); 
    printf("Islmiyat=   %d\n", isl); 
    printf("Pakistan Studies= %d\n", ps); 
    printf("Mathematics=  %d\n", maths); 
    printf("Physics=   %d\n", phy); 
    printf("Chemistery=   %d\n", chem); 
    printf("Biology=   %d\n\n", bio); 

    printf("Percentage:   %d\n",per); 

    switch(per) 
    { 
     case (per>80): 
     printf("A+"); 

     case (per>70): 
     printf("A"); 
    } 
    getch(); 
} 
+4

私が知る限り、あなたはそのようにswitch文を使用することはできません。 if文を使うだけです。また、これがうまくいけば、switchステートメントのそれぞれのケース内に 'break'ステートメントがありません。 – byxor

+0

定数ではないので? –

+0

上記のコードを参照してください。私はswitch文を使用しました:) not if statement – scriptscale

答えて

4

スイッチケースは、定数の直列に可変の平等をチェックIFS一連の短い手です。指定した方法で使用することはできません。代わりに、普通の古いifステートメントを使用することができます:

if (per > 80) { 
    printf("A+"); 
else if (per > 70) { 
    printf("A"); 
} 
+1

"*スイッチケースは一連のifs *" hm、hmの短い手です。私はそれがexplicltyへのジャンプテーブルだと言うでしょう***必要***を避けるために "* ifsのシリーズの*"。 – alk

+0

私は以前これを使用していましたが、私も出力を得ました。おそらくswitch文を使用して同じ答えを得ると思っていましたが、switch文は許されません。私のコードで..! – scriptscale

+0

...しかし、おそらく私は間違って "間違って解釈する" *短い手*。 – alk

関連する問題