2013-11-01 64 views
1

你好,我一直坐在這裏很長一段時間,試圖弄清楚這是爲什麼不工作,但我還沒有運氣成功!switch語句不編制

#include <stdio.h> 

main(void) 
{ 
    int mark; 

    printf("Please enter the mark\n"); 
    scanf("%d", &mark); 

    switch(mark){ 
     case (mark <40): 
      printf("That's a fail"); 
      break; 
     case (mark >=40 && <60): 
      printf("That's a pass"); 
      break; 
     case (mark >=60 && <70): 
      printf("That's a merit"); 
      break; 
     case (mark >=70): 
      printf("That's a distinction"); 
      break; 
    } 
}  
+0

當你說不起作用 - 你究竟是什麼意思? –

+0

韋爾普,我得說實話:d –

+0

它生產的編譯器 –

回答

0

它的正常工作,編譯器阻止您編譯東西是無效C.

case標籤必須是實際的整型常量,而不是做進一步的計算表達式。

您應該使用if/else if檢查您的各種條件。

4

對於其確切的價值是不知道的比較,使用if-else塊。你正在嘗試使用一個switch語句,如if-else塊,並且它不能正常工作。一個適當的開關看起來像

switch(mark) { 
case 40: //if mark is 40, no more, no less 
    ... 
case 60: //same 
... 
} 

因爲你不想寫出來的40條線均指向相同的語句,只需使用

if(mark < 40) { ... } 
else if(mark < 60) { ... } 
+0

啊!正確,真棒,謝謝:) –

+0

@SzymonZmudzki 如果這對你有所幫助,考慮點擊答案旁邊的複選標記。 –

1

給K & R:

「switch語句是一個多方面的決定,用於測試表達式是否匹配個恆定整數值之一,並相應地進行分支。」

也就是說,你不能做你想要做的事。每種情況都需要一個常量語句,如簡單的int或char值。

對於你想做什麼,你需要的if/else。另外,請參閱jaap關於布爾語句正確語法的回答。