C语言中Switch-Case的意外行为

时间:2013-11-23 09:11:14

标签: c switch-statement turbo-c++

我在一本书中遇到了一个问题,当我在MSDOSBox TurboC ++中运行代码对于Windows 7时,它显示了我意想不到的行为: -

代码如下: -

#include <stdio.h>
#include <conio.h>
void main()
{
   char s = 3;
   switch(s)
   {
       case 1 :
       printf("\nDiamond");
       break;
       case 2 :
       printf("\nSpades");
       break;
       default :
       printf("\nHeart");
       break;
   }
   printf("\nI thought something like this");
   getch();
}

现在问题是......

默认情况下的声明从未打印过。它只打印“我想这样的东西”

我收集了那个 在案例中 char被视为ASCII代码中的值

唉... 在这里,char s的值已被赋予3而不是'3' 但又来了 至少应该打印默认情况,即使该值与任何情况都不相同

好吧......如果这有帮助..

我试图把

case 3 :

而不是

default :

现在声明即printf(“\ nHeart”);执行并在屏幕上打印“Heart”

1 个答案:

答案 0 :(得分:3)

您是否从源中剪切/粘贴此代码,或重新键入?如果您重新输入,请返回并确保在原始文件中正确拼写default

通常不会引发编译器警告的常见错误是为最后一个标签键入defualt而不是default