2016-07-27 111 views
-2

我有去如下switch語句:switch語句不改變變量

   switch (event.key.keysym.sym) { 
      case SDLK_ESCAPE: 
       running = false; 
       break; 
      case SDLK_w: 
       y -= 10; 
       std::cout << "pressed" << std::endl; 
       std::cout << y << std::endl; 
      case SDLK_s: 
       y += 10; 
      } 

當我運行這個程序,按w和期待中顯示按下控制檯,所以是y的值,但然而,我按w變量y不會改變。

s但是工作得很好。

+4

你錯過了'break'之前'情況SDLK_s:' – Garf365

+0

y軸= 10和y + = 10而被處決因此y不會改變。 – sameerkn

+3

這聽起來像你可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver

回答

1

你已經開始新的情況下 之前錯過了一個破考慮下面的骨骼

switch (event.key.keysym.sym) { 
    case SDLK_ESCAPE: 
    running = false; 
    break; 
    case SDLK_w: 
    y -= 10; 
    std::cout << "pressed" << std::endl; 
    std::cout << y << std::endl; 
    break; 
    case SDLK_s: 
    y += 10; 
    break; 
    } 
+2

這樣的簡單拼寫應該是封閉的,而不是回答。 – NathanOliver