2016-07-27 144 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