闇プログラマーに喧嘩を売ってしまった昼下がり~条件分岐篇~

※このまとめに含まれるプログラムは一種のパズル的な遊びです。   くれぐれも用法用量を守った上で正しくご利用ください><   実用するならば、“言うまでもなく” if か ?: を利用すべきです。 やばい連中に喧嘩を売ってしまった……。 続きを読む
141
にゃんだーすわん @tadsan

先週の部活の新入生向けC言語講座でif-else文だったので、せっかくなので講師の二年生に「if文を使はずに、printfで完結して表示内容を分岐する方法わかる?」と質問したところ、二年はおろか三年の正答率もやばかった件とか……。

2011-05-26 13:22:43
KOIZUKA Akihiko @koizuka

@tadsan 三項演算子を使うのが正解とする問題だろうか

2011-05-26 13:23:45
琴子(じゅーはっちゃい) @tot_main

@tadsan ifを使わずにと言った時点で三項演算子が出てこないと言うのが問題w ♪

2011-05-26 13:26:04
忠吉さん(偽物) @tadsan2

--------------------------------------------------

2011-02-16 05:29:57
にゃんだーすわん @tadsan

printf("%s\n",(a==b)?"正":"誤"); みたいなのが模範解答。

2011-05-26 13:23:56
るいーにΔ譜久嶺るい @1ouis

@tadsan なるほど三項演算子でしたか、そこで使うアイデアはなかなか出てこないですね

2011-05-26 13:28:40
Λlisue @lambdalisue

@tadsan あ、なんだ演算子も使わないでって意味かと思ってた。

2011-05-26 13:35:34
るいーにΔ譜久嶺るい @1ouis

三項演算子は return (a==b)?1:0 みたいに使う事が多いかなぁ。

2011-05-26 13:30:30
るいーにΔ譜久嶺るい @1ouis

char型配列って+で連結できたっけ。できなかった気がするんだけど……、あへ?

2011-05-26 13:31:52
るいーにΔ譜久嶺るい @1ouis

これの+はstringみたいに連結のための+ではないのか。これは、んー?

2011-05-26 13:37:12
にゃんだーすわん @tadsan

@1ouis C言語なので、char* に 4加算 = 始点が4byteずれる ってことではないかと。比較演算子は 0 か 1 を返すので、a!=bならばずれなくて、しかも \0 で文字列が終ります。

2011-05-26 13:42:15
るいーにΔ譜久嶺るい @1ouis

@tadsan やはり、ポインタとしてそれをずらしているということですか。文字列がポインタとして扱われていたんですね……!!

2011-05-26 13:45:58
忠吉さん(偽物) @tadsan2

--------------------------------------------------

2011-02-16 05:29:57
リモートなお仕事募集中でござるぞ @vivisuke

じゃあ、?: も使わずに表示内容を分岐する方法はわかる? QT @tadsan 先週の部活の新入生向けC言語講座でif-else文だったので、せっかくなので講師の二年生に「if文を使はずに、printfで完結して表示内容を分岐する方法わかる?」と質問したところ、二年はおろか三年…

2011-05-26 13:29:20
にゃんだーすわん @tadsan

闇プログラマーじゃないので、呈示されたコードは読めても、知らない方法はわかりません>< RT @vivisuke: じゃあ、?: も使わずに表示内容を分岐する方法はわかる?

2011-05-26 13:33:40
忠吉さん(偽物) @tadsan2

--------------------------------------------------

2011-02-16 05:29:57
KOIZUKA Akihiko @koizuka

@tadsan printf("誤¥0正"+(a==b)*4); // UTF-8の場合

2011-05-26 13:25:22
にゃんだーすわん @tadsan

戀塚さんやめてwwwwwwwwww

2011-05-26 13:29:10
にゃんだーすわん @tadsan

戀塚さんのコード http://twitter.com/#!/@koizuka/status/73605621345300480 がどうして動くのか後輩に質問してみるとおもしろいかもしれない。後輩が文字列\0の話をしてたのは聴いた覚えがあるので、これはきっと回答できると期待。

2011-05-26 13:32:02
KOIZUKA Akihiko @koizuka

@tadsan printf("A%cB",61+(a>b)-(a<b)); // ASCII code環境

2011-05-26 13:47:13
にゃんだーすわん @tadsan

また変態なコードがwwwwww むしろASCIIのコード表が良くできてることに感服。

2011-05-26 13:49:48
忠吉さん(偽物) @tadsan2

--------------------------------------------------

2011-02-16 05:29:57
筒天@【卒業】団体一名様 @tututen

@tadsan a-b||printf("正解\n");a-b&&printf("不正解\n"); 

2011-05-26 13:38:42
にゃんだーすわん @tadsan

また素直じゃないコードがwwwwww

2011-05-26 13:43:16