math_neko math_neko 2013-06-06 01:02:18

[C] 恐怖のスパゲッティ このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

Pastebin.com で見つけた恐怖のスパゲッティコード。ネタバレするとアレなので出力結果は敢えて書かない。ってかこれでコンパイル通るのが解せぬ。

#include <stdio.h>

int main() {
    int i=5;
    switch ( 2 ) {
        case 0:
            for (  i=0; i<10; i++ ) {
        case 1:
            printf("A i=%d\n",i);
        case 2:
            printf("B i*i=%d\n",i*i);
            };
        case 3:
            printf("done");
            break;
    } 

    return 0;
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(6)

#1 3higo3 3higo3 2013-06-06 08:03:33  

switch文をこーしてbreakさせない手法を使うのはたまにみる。しかしiの初期化は2回しちゃうのか?

#2 jkr_2255 jkr_2255 2013-06-06 20:07:23  

C言語だと、caseはラベルでしかないからなあ…

こんな最適化テクニックもあるみたいだけど https://ja.wikipedia.org/wiki/Duff%27s_device

#3 InternalServerE InternalServerE 2013-06-07 14:57:47  

なんと、こんなのが動くのか…。
実行結果は何となく想像がつくものの、自分の期待通りのコードをこの流儀で書ける自信がまったく持てない。すっ飛んでますな。。
久々の胸熱ウンコードをありがとう。

#4 kogaken1 kogaken1 2013-06-09 10:39:09  

7行目for文のiの初期化は使われずにループ条件と更新だけ使ってるような。省略してもOK。 なんか実用に迫られて書いたコードじゃなくて「こんなことも出来ますけどやるなよ!絶対にやるなよ!!」の教材っぽくも見える。

#5 math_neko math_neko 2013-06-09 10:56:03  

Pastebin.com に載っていたソースなので、仰る通り「こういう書き方もできるけどやるなよ ! 絶対やるなよ !!」っていう意図で投稿されたんだと思います。私も久々に胸が熱くなりましたw

#6 utubyou009 utubyou009 2017-07-25 04:00:36  

所詮 Cのswitchはgoto文の塊みたいなものさ。forブロックの外から中に飛び込むのは燃える!

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[C] ( 0][0 )/

このエントリーをはてなブックマークに追加

とある組み込み系のコード。元気に動いては...

#define NUM_PORT 8
#define NUM_CHANNEL ...

鑑賞する »

[Java] 連番

このエントリーをはてなブックマークに追加

もはや人間が読むものではない。

...

package com.renban.erq053.czp008;

/**...

鑑賞する »