記事検索
逆アクセスランキング
ブログランキング

スポンサードリンク
アーカイブ

スポンサード リンク

switch文って必要?(C)


1:2014/07/02(水)22:42:40 ID:
else ifで良くね?
2:2014/07/02(水)22:53:22 ID:
返事がない
ただの屍のようだ
3:2014/07/02(水)23:04:07 ID:
ググったらswitchの方がelse ifより速いって出たわ
速さは大切だね
議論の余地も無さそうだしEOF
4:2014/07/03(木)04:35:30 ID:
返事がない
ただの屍のようだ
5:2014/07/06(日)22:45:18 ID:
Perlにswitchがないでしょ。そういうライブラリはありますが…
switchは、いらないとおもってるひとは、たしかにいるようだ
6:2014/07/08(火)09:29:46 ID:
大量の else if は大変だろう
7:2014/07/09(水)01:42:38 ID:
アセンブラに落とすとき、
case値が連続していたらジャンプ先のテーブルで一発で
分岐できる。JavaVMにも似た中間コードがある。
昔は今以上に速度が重要だったからね。
8:2014/07/10(木)04:47:32 ID:
むしろ、if を無くして、全部 swich にすればよくね?
9:2014/07/10(木)10:06:44 ID:
C, C++のswitchは、整数しかつかえない。型をチェックしたとき、ミスがわかるという利点がある
10:2014/07/11(金)10:55:09 ID:
switch文のお陰でES5でジェネレータなどを簡単にエミュレートすることができる
11:2014/07/11(金)22:31:30 ID:
ifより見やすくなるからc以外は基本使える
12:2014/07/15(火)14:01:48 ID:
char msg[256];
msg=fgets(msg,256,stdin);
switch(msg){
default:
printf("default");
case "open2ch":
printf("open2ch");
break;
case "2ch":
printf("規制嵐");
break;
}
文法ミスは無い筈だが全く
期待通りの動作しない
13:2014/07/15(火)21:00:44 ID:
/* msg.c */
#include <stdio.h>

int main(int argc, char *argv[])
{
    enum MSG_LIST {DEFAULT, OPEN_2CH, NET_2CH};
    int code;
    switch(argc) {
    case 2:
        code = *argv[1];
        switch( code - '0' ) {
        case OPEN_2CH:
            fprintf(stdout, "Open-2ch\n");
            break;
        case NET_2CH:
            fprintf(stdout, "2ch.net\n");
            break;
        default:
            fprintf(stdout, "other\n");
            break;
        }

        break;
    default:
        fprintf(stderr, "msg\nmsg 1 (Open-2ch)\nmsg 2 (2ch.net)\n");
        return 1;
    }

    return 0;
}
14:2014/07/15(火)21:01:50 ID:
C:\work>msg
msg
msg 1 (Open-2ch)
msg 2 (2ch.net)

C:\work>msg 2
2ch.net

C:\work>msg 1
Open-2ch

C:\work>msg 3
other

C:\work>msg 0
other
15:2014/07/15(火)22:26:24 ID:
cのswitchは整数値しか使えない
>>9にも書いてるだろうが
16:2014/07/23(水)05:40:10 ID:
if (a) { A
if (b) { B
if (c) { C
} } }



switch (true) {
case a: A
case b: B
case c: C
}

と書けるように、条件文を簡素化できることがある
17:2014/07/24(木)05:08:34 ID:
>>16
普通のC言語はそれ無理だし
18:2014/07/24(木)05:09:14 ID:
そもそもTRUEは1なんだから、
switch(1) は意味無い
19:2014/07/24(木)10:20:55 ID:
>>16
言いたいことは分かるが例がおかしい

>>17-18
言いたいことは分かるが感覚が古い






switch利用は可読性向上の意味合いが強いと思うので
enumとセットで使う事が多かったような覚えがあります。
でも正直分岐が多くないならif・elseで十分ですかね(´・ω・`)

 

コメントする

名前
 
  絵文字
 
 

スポンサード リンク

スポンサード リンク