Thinkers'Studio
JavaとC言語の自習ツール
判断の switch文で使う default

switch の default

 switch で使う defaultは、つづりを間違えてもコンパイル・エラーになりません。
 たとえば default を defualt と書き間違えても、そういう名前のラベルと解釈されます。
 気づきにくい間違いになりやすいので注意しましょう。
 下のクイズがその例です。

(今回のクイズです)
 下記は映画館のプログラムで、スクリーン番号を指定すると上映中の映画名が表示されます。
#include <stdio.h>
main()
{
    int screen;

    screen = 4; //スクリーン番号4で上映中の映画を教えて?
    switch( screen ) {
    case 1 : printf( "ワンピースです\n" );                  break;
    case 2 : printf( "ファイト・クラブです\n" );            break;
    case 3 : printf( "ゴッドファーザーです\n" );            break;
    case 4 : printf( "ミッション・インポッシブルです\n" );  break;
    default: printf( "番号(1〜4)をご指定ください\n" );      break; 
    }
}
 これを実行すると「ミッション・インポッシブルです」と表示されますね。
 では次に、default のつづりを間違え、screen に 5 が指定された場合です。
#include <stdio.h>
main()
{
    int screen;

    screen = 5; //スクリーン番号5で上映中の映画を教えて?
    switch( screen ) {
    case 1 : printf( "ワンピースです\n" );                  break;
    case 2 : printf( "ファイト・クラブです\n" );            break;
    case 3 : printf( "ゴッドファーザーです\n" );            break;
    case 4 : printf( "ミッション・インポッシブルです\n" );  break;
    defualt: printf( "番号(1〜4)をご指定ください\n" );      break; 
    }
}
 こちらのプログラムを実行すると、どんな結果になるでしょうか? 考えてみましょう。
   (答えは、次回のC言語の Tips で ・・・)
前回のクイズの答え:  (前回の問題を見る
if( visitors = 1000 ) と書くと、「visitors に 1000 を代入した結果を評価し、それが真なら」という判断になります。
if( 1000 ) を評価するのと同じです。 式の結果が 0 でなければ真、0 なら偽ですから、if( visitors = 1000 ) はいつでも真です。だから、その上で visitors に何を入れても「1000人目のお客様です」と表示されるのです。