-1

我试图在 switch 语句中插入一个 if else 语句,但是只有 else 语句会打印出来。请问有什么帮助吗?我指的是第三个 switch 语句。

        num_remain= num_temp/10;

    switch (num_remain)
    {

    case 0: printf(" "); break;
    case 2: if (num=0)
                        printf("Twenty");
                        else printf(" And Twenty"); break; // If num= 0 or not, it just prints "And Twenty".
    case 3: printf(" Thirty"); break;
    case 4: printf(" Fourty"); break;
    case 5: printf(" Fifty"); break;
    case 6: printf(" Sixty"); break;
    case 7: printf(" Seventy"); break;
    case 8: printf(" Eighty"); break;
    case 9: printf(" Ninety"); break;

    }
4

3 回答 3

5
if (num=0)

你错过了一个=标志,这导致这是一个分配if(num=0)是相同的if(0),因此将永远是错误的。它应该是

if (num==0)

或者更好:

if(0 == num)

这将通过抛出错误来防止这样的错误。


编辑:
你说这不能解决问题,那么还有其他问题。这是一个可以正常工作的示例代码:

int i = 2;
int j = 0;

switch(i)
{
    case 0:
       printf("it's 0\n");
       break;
    case 1:
       printf("it's 1\n");
       break;
    case 2:
       printf("it's 2\n");
       if(0 == j)
           printf("j is 0\n");
       else
           printf("hit the else\n");
       break;
    default:
       printf("The default\n");
}

此代码是您尝试做的概念证明。它打印“it's 2”,后跟“j is 0”,因为它有效。如果您的代码仍然无法正常工作,那么您正在做其他事情,您没有向我们展示,或者您的变量没有按照您的想法设置。检查您的变量,在输入开关之前打印它们。

于 2013-02-06T14:09:52.710 回答
4
if (num==0)

并不是

if (num=0)
于 2013-02-06T14:08:44.800 回答
0

其他人已经回答了你的问题,但为了让你更容易,你还可以引入范围,使程序员更容易阅读和写作:

// the braces introduce scope, and make it easier to read and find your bugs.
case 2:
{ 
  if (0 == num)
  {
    printf("Twenty");
  }
  else 
  {
    printf(" And Twenty");
  }
} break;
于 2013-02-06T14:20:48.053 回答