-1

switch ステートメントに if else ステートメントを挿入しようとしていますが、else ステートメントのみが出力されます。何か助けてください。3 番目の 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)ため、常に false になります。そのはず

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 に答える