<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>プログラミング</title><link>http://blogs.wankuma.com/andochin/category/1659.aspx</link><description>プログラミングのよもやま</description><managingEditor>あんどちん</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>あんどちん</dc:creator><title>C++ポケットリファレンス</title><link>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx</link><pubDate>Thu, 25 Apr 2013 01:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/327861.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2013/04/25/327861.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/327861.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/327861.aspx</trackback:ping><description>&lt;p&gt;ぼくも執筆に協力したC++ポケットリファレンスがようやく発売の運びとなりました。&lt;/p&gt; &lt;p&gt;&lt;a href="http://andochin.wankuma.com/images/C_516/pokeref_cover.png"&gt;&lt;img title="pokeref_cover" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="pokeref_cover" src="http://andochin.wankuma.com/images/C_516/pokeref_cover_thumb.png" width="161" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;中々カコイイ表紙です。&lt;/p&gt; &lt;p&gt;Amazonにもページできました。来月発売なのに結構いい順位になってたりして、びっくりしてます。&lt;/p&gt;&lt;iframe style="height: 240px; width: 120px" marginheight="0" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=andochin-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=4774157155" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;あと、&lt;a href="http://gihyo.jp/book/2013/978-4-7741-5715-3"&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;技術評論社の書籍紹介ページ&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;を見ても、tweet数やfacebookの「いいね！」が結構な数になっていてびっくりです。&lt;/p&gt; &lt;p&gt;世の中のC++に対する反応っていうのは僕が思っている以上に凄いですね。&lt;/p&gt; &lt;p&gt;本の内容ですが、リファレンス本なので、「これやりたいんだけど」とか、「どう書くんだっけ？」といった場合に使う本で、所謂入門書とは違います。ただ、C++の入門書を読んだ人や、CやC#やJavaなどの言語を使ったことのある人がC++11でプログラムを書くことになった時には役に立つと思います。&lt;/p&gt; &lt;p&gt;# リファレンス本じゃなくて、C++11対応の入門書が欲しい人は…然るべき方に「書いて」って言いましょうｗ。&lt;/p&gt; &lt;p&gt;この本の最大の売りは、C++11対応でしょう。&lt;strong&gt;&lt;font color="#ff0000"&gt;日本人が日本語で書いたC++本でC++11をここまで盛り込んでいる本は今のところ無いと思います&lt;/font&gt;&lt;/strong&gt;。文法も標準ライブラリも一通り網羅していて、C++11対応。日本で出ているC++本に対する印象からすると、よくこれを出させてくれたなって思います。技術評論社さんに感謝です。&lt;/p&gt; &lt;p&gt;528ページというページ数で色々な反応がありますが、僕自身C言語ポケットリファレンスやJavaポケットリファレンス、Linuxコマンドポケットリファレンスを持っているポケリストですが、それらの本と大体同じくらいの厚さ。オーバーオールのポケットやダウンジャケットの大きめのポケットなら（たぶん）入るサイズです。鈍器と呼ぶのは1000ページ超えてからにしましょう。&lt;/p&gt; &lt;p&gt;それから、この本は電子書籍版も同時発売となります。電子書籍なら重さは気にならないですね！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/327861.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>VC11のrange-based forサポートとinitializer-list</title><link>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx</link><pubDate>Fri, 31 Aug 2012 02:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/288697.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/08/31/288697.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/288697.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/288697.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;ここ&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;に書かれているVC11のC++11サポート状況をみると、range-based for-loopがYesになっており、きちんとサポートされているように見えるのですが、「あれ？」と思ったんですね。&lt;/p&gt; &lt;p&gt;規格のrange-based for-loopのところをみるとrange-based for-loopには以下の形式もあります&lt;/p&gt; &lt;p&gt;for ( &lt;em&gt;for-range-declaration&lt;/em&gt; : &lt;em&gt;braced-init-list&lt;/em&gt; ) &lt;em&gt;statement&lt;/em&gt;&lt;/p&gt; &lt;p&gt;initializer-listをサポートしていないVCでこれが通るんでしょうか？しかし、この書式が受け付けられなければYesではなく、Partialと書いてありそうな気がします。&lt;/p&gt; &lt;p&gt;そこで、以下のコードを試してみたのですが、コンパイルエラーになりました。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;for(auto v : { 0, 1, 2, 3 }) cout &amp;lt;&amp;lt; v &amp;lt;&amp;lt; endl;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;うぅん…予想できたこととはいえ、ちょっと残念&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/288697.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>gcc-4.7におけるinline namespaceとnamespaceの混在</title><link>http://blogs.wankuma.com/andochin/archive/2012/05/23/272804.aspx</link><pubDate>Wed, 23 May 2012 00:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/05/23/272804.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/272804.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/05/23/272804.aspx#Feedback</comments><slash:comments>33</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/272804.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/272804.aspx</trackback:ping><description>&lt;p&gt;C++11にはインラインネームスペースという機能があります。インラインネームスペース内は透過的にアクセスすることが可能です。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;inline namespace name {&lt;br&gt;&amp;nbsp; void foo();&lt;br&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;この場合fooはname::foo();でもfoo();でも呼び出せます。&lt;/p&gt; &lt;p&gt;そんなinline namespace。gccでも実装されているのですが、同名のinline namespaceとnamespaceを作るとどちらもinline namespaceとして扱われてしまうというバグが存在しています。&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;namespace name {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void func1() {}&lt;br&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;inline namespace name {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void func2() {}&lt;br&gt;}&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;上記のように同じ名前空間をinline namespace/namespace両方でで宣言すると、どちらに含まれる識別子も名前修飾なしで透過的にアクセスできてしまいます。&lt;/p&gt;&lt;p&gt;そもそも同名名前空間のinlineと非インラインの混在がダメなような気がしますが、それができて、その通り機能してくれたらライブラリ屋さん的には便利かも？と思います。&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/272804.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>tupleのネスト</title><link>http://blogs.wankuma.com/andochin/archive/2012/04/04/264665.aspx</link><pubDate>Wed, 04 Apr 2012 01:31:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/04/04/264665.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/264665.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/04/04/264665.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/264665.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/264665.aspx</trackback:ping><description>&lt;p&gt;利用用途があるかどうかはともかく…&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;tuple&amp;lt;char, tuple&amp;lt;short,&amp;nbsp; long&amp;gt;&amp;gt; val;&lt;br&gt;auto elem = get&amp;lt;1&amp;gt;(val);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;このコードはgccでもVCでも問題なくコンパイルできます。&lt;/p&gt; &lt;p&gt;但し、&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;struct A{};&lt;br&gt;struct B{};&lt;br&gt;struct C{};&lt;br&gt;//…&lt;br&gt;tuple&amp;lt;A,tuple&amp;lt;B,C&amp;gt;&amp;gt;val;&lt;br&gt;auto elem = get&amp;lt;1&amp;gt;(val);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;このコードはVCだと通りますが、gccだとエラーになります。&lt;/p&gt; &lt;p&gt;コードが悪いのか、gccが悪いのか、はたまたVCが悪いのか。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/264665.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>ラムダ式の関数ポインタを返すラムダ式</title><link>http://blogs.wankuma.com/andochin/archive/2012/03/08/256394.aspx</link><pubDate>Thu, 08 Mar 2012 02:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2012/03/08/256394.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/256394.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2012/03/08/256394.aspx#Feedback</comments><slash:comments>680</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/256394.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/256394.aspx</trackback:ping><description>&lt;h4&gt;&lt;a href="http://blogs.wankuma.com/episteme/archive/2012/02/29/253885.aspx"&gt;&lt;font color="#0000ff"&gt;stateless lambda&lt;/font&gt;&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;&lt;font size="2"&gt;を見て、&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;「へぇ、ラムダ式を関数ポインタに入れられるんだ」&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;と感心していたんですが、&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;「ラムダ式の関数ポインタを返すラムダ式って書けるのかな？」&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;という疑問が。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #9bbb59" size="2"&gt;&lt;/font&gt;&lt;font style="" color="#4f81bd" size="2"&gt;#include &amp;lt;iostream&amp;gt;&lt;br&gt;#include &amp;lt;vector&amp;gt;&lt;br&gt;&lt;br&gt;int main()&lt;br&gt;{&lt;br&gt;&amp;nbsp; using namespace std;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="" color="#4f81bd" size="2"&gt;&amp;nbsp; void(*(*f)())() = []()-&amp;gt;void (*)() { return []{cout &amp;lt;&amp;lt; "hello\n";}; };&lt;br&gt;&amp;nbsp; void(*f1)() = f();&lt;br&gt;&amp;nbsp; f1();&lt;br&gt;&amp;nbsp; []()-&amp;gt;void (*)() { return []{cout &amp;lt;&amp;lt; "hello\n";};}()();&lt;br&gt;&amp;nbsp; &lt;br&gt;&amp;nbsp; vector&amp;lt;void(*)()&amp;gt; fv = {{[]{cout&amp;lt;&amp;lt;"1\n";}}, {[]{cout&amp;lt;&amp;lt;"2\n";}} };&lt;br&gt;&amp;nbsp; for(void(*a)() : fv) a();&lt;br&gt;}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #9bbb59"&gt;&lt;/font&gt;&lt;font style="" size="2"&gt;これの実行結果が&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;hello&lt;br&gt;hello&lt;br&gt;1&lt;br&gt;2&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;fにラムダ式の関数ポインタを返すラムダ式の関数ポインタを入れ、その実行結果をf1に。そしてf1を呼べば”hello”と表示されます。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;その下の行は同じラムダ式を直接実行。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;そして&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;「vectorにだって入れられるよね？」&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;と疑問に思ったから試してみたのがその下。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;このプログラムはgcc-4.7.0 RC (2012/3/2版)で試しました。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #9bbb59" size="2"&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/256394.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>FizzBuzzと貧乏性</title><link>http://blogs.wankuma.com/andochin/archive/2010/10/19/194021.aspx</link><pubDate>Tue, 19 Oct 2010 23:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2010/10/19/194021.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/194021.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2010/10/19/194021.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/194021.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/194021.aspx</trackback:ping><description>&lt;p&gt;良く見るプログラムの課題、FizzBuzz。問題の内容は以下の通り。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;３で割り切れる数字の場合Fizzと言う  &lt;li&gt;５で割り切れる数字の場合Buzzと言う  &lt;li&gt;３でも５でも割り切れる数字の場合Fizz Buzzと言う  &lt;li&gt;上記以外（３でも５でも割り切れない）であれば数値を出力&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;さて、このプログラムを素直に書いてみると&lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;string fizz_buzzer(int value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string result;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 == 0) result = "Fizz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 5 == 0) result = "Buzz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 == 0 &amp;amp;&amp;amp; value % 5 == 0) result = "FizzBuzz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 != 0 &amp;amp;&amp;amp; value % 5 != 0) result = lexical_cast&amp;lt;string&amp;gt;(value);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;こんな感じでしょうか。&lt;br&gt;「でもちょっと無駄があるなぁ…」&lt;br&gt;こう考えてしまうのが性。ぱっと見思い浮かぶのが&lt;br&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;5で割り切れる時Buzzを代入するのではなく連結すれば1行減らせる&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;です。するとプログラムはこうなります。&lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;string fizz_buzzer(int value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string result;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 == 0) result = "Fizz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 5 == 0) result += "Buzz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 != 0 &amp;amp;&amp;amp; value % 5 != 0) result = lexical_cast&amp;lt;string&amp;gt;(value);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;しかし、一度判定している３もしくは５で割った余りを再度計算するのが面白くないです。&lt;br&gt;「そうだ、フラグを追加しよう」&lt;br&gt;するとプログラムはこうなります。&lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;string fizz_buzzer(int value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string result;&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool fizz_or_buzz = false;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 == 0) { result = "Fizz"; fizz_or_buzz = true; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 5 == 0) { result += "Buzz"; fizz_or_buzz = true; };&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!fizz_or_buzz) result = lexical_cast&amp;lt;string&amp;gt;(value);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;冗長な判定が無くなりいい感じになりました。しかし、フラグ用の変数を追加したのが面白くない。&lt;br&gt;そこで次の点に着目します。&lt;br&gt;「FizzでもBuzzでもなければresultの長さは0で数値代入になるじゃないか」&lt;br&gt;するとプログラムはこうなります。&lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;string fizz_buzzer(int value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string result;&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 3 == 0) result = "Fizz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(value % 5 == 0) result += "Buzz";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(result.size() == 0) result = lexical_cast&amp;lt;string&amp;gt;(value);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;「短くなって良かった。最初のプログラムと違いFizz/Buzzの条件が変わっても修正個所は１か所で済むし。」&lt;/p&gt; &lt;p&gt;そう思っていたんです。しかし、ある人の言葉でこれにも問題があることに気付きました。&lt;/p&gt; &lt;p&gt;「このプログラムは命題通りのプログラムになっているか？」&lt;/p&gt; &lt;p&gt;与えられた値に対する出力は要求通りです。しかし、このプログラムを見て最初の要求がわかるか？と言われれば確かにわかりにくいです。&lt;/p&gt; &lt;p&gt;FizzBuzzのように単純なプログラムであれば問題は無いですが、仕様をプログラマが脳内で最適化してコードに落とすと結果は合っていてもプログラムを見た時にその要求を満たしているかすぐわからないという問題が起きうるんですね。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/194021.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>関数ポインタを返す関数へのポインタとか</title><link>http://blogs.wankuma.com/andochin/archive/2010/08/04/191969.aspx</link><pubDate>Wed, 04 Aug 2010 02:07:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2010/08/04/191969.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/191969.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2010/08/04/191969.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/191969.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/191969.aspx</trackback:ping><description>&lt;p&gt;関数ポインタ。  &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;いつもtypedefしているから関数ポインタを返す関数を書くことで悩むことが無かった。&lt;br&gt;否、悩みたくないから関数ポインタをtypedefしていたという方が正しいでしょう。&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;ではtypedefを使わずに関数ポインタを返す関数を書く、且つその関数へのポインタの型を書くことは出来るのか（言語としてではなく自分の知識としてです）  &lt;p&gt;以下のようなプログラムを書いて段階的に難しくなるようにしてみました。基本的にCでもC++でも変わりませんが、C++ではtypeidがあるので型名を取得できます。&lt;br&gt;折角なのでその機能を利用し、C++環境ではよりわかりやすい出力結果が出るように してみました。  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;※このプログラムはCでもC++でもどちらでもコンパイルできるようにしてあります。ここに載せている実行結果はVC2008のものです。&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;&lt;font color="#008000"&gt;#ifdef __cplusplus&lt;br&gt;#include &amp;lt;cstdio&amp;gt;&lt;br&gt;#include &amp;lt;typeinfo&amp;gt;&lt;br&gt;using namespace std;&lt;br&gt;#else&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#endif &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;#ifdef __cplusplus&lt;br&gt;#define SHOW_TYPE(func, var) func; printf("%-30s %s\n", #func, typeid(var).name())&lt;br&gt;#else&lt;br&gt;#define SHOW_TYPE(func, var) func;&lt;br&gt;#endif &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;/* 関数ポインタで呼び出される関数本体 */&lt;br&gt;void foo(int i) { printf("foo(%d);\n", i); }&lt;br&gt;void bar(void (*f)(int), int i) { printf("bar(%p, %d); ", f, i); f(i); }&lt;br&gt;void (*foo_getter(void))(int) { printf("foo_getter(); "); return foo; }&lt;br&gt;void (*foo_returner(void (*f)(int)))(int) { printf("foo_returner(%p);", f); return f; } &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;/* 関数ポインタ */&lt;br&gt;void (*foo_v)(int) = foo;&lt;br&gt;void (*foo_vs[1])(int) = { foo }; &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;/* 関数ポインタを引数としてとる関数へのポインタ */&lt;br&gt;void (*bar_v)(void (*)(int), int) = bar;&lt;br&gt;void (*bar_vs[1])(void (*)(int), int) = { bar }; &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;/* 関数ポインタを戻り値とする関数へのポインタ */&lt;br&gt;void (*(*foo_getter_v)(void))(int) = foo_getter;&lt;br&gt;void (*(*foo_getter_vs[1])(void))(int) = { foo_getter }; &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;/* 関数ポインタを引数として取り関数ポインタを戻り値とする関数へのポインタ */&lt;br&gt;void (*(*foo_returner_v)(void (*)(int)))(int) = foo_returner;&lt;br&gt;void (*(*foo_returner_vs[1])(void (*)(int)))(int) = { foo_returner };&lt;br&gt;int main()&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_v(1), foo_v);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_vs[0](2), foo_vs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(bar_v(foo, 3), bar_v);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(bar_vs[0](foo, 4), bar_vs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_getter_v()(5), foo_getter_v());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_getter_vs[0]()(6), foo_getter_vs[0]());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_returner_v(foo)(7), foo_returner_v(foo));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOW_TYPE(foo_returner_vs[0](foo)(8), foo_returner_vs[0](foo)); &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br&gt;} &lt;/font&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000" size="4"&gt;Cでの実行結果&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;em&gt;&lt;font color="#ff8000"&gt;foo(1);&lt;br&gt;foo(2);&lt;br&gt;bar(00401000, 3); foo(3);&lt;br&gt;bar(00401000, 4); foo(4);&lt;br&gt;foo_getter(); foo(5);&lt;br&gt;foo_getter(); foo(6);&lt;br&gt;foo_returner(00401000);foo(7);&lt;br&gt;foo_returner(00401000);foo(8);&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000" size="4"&gt;C++での実行結果&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;em&gt;&lt;font color="#ff8000"&gt;foo(1);&lt;br&gt;foo_v(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(int)&lt;br&gt;foo(2);&lt;br&gt;foo_vs[0](2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*[1])(int)&lt;br&gt;bar(00401000, 3); foo(3);&lt;br&gt;bar_v(foo, 3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(void (__cdecl*)(int),int)&lt;br&gt;bar(00401000, 4); foo(4);&lt;br&gt;bar_vs[0](foo, 4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*[1])(void (__cdecl*)(int),int)&lt;br&gt;foo_getter(); foo(5);&lt;br&gt;foo_getter_v()(5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(int)&lt;br&gt;foo_getter(); foo(6);&lt;br&gt;foo_getter_vs[0]()(6)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(int)&lt;br&gt;foo_returner(00401000);foo(7);&lt;br&gt;foo_returner_v(foo)(7)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(int)&lt;br&gt;foo_returner(00401000);foo(8);&lt;br&gt;foo_returner_vs[0](foo)(8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (__cdecl*)(int)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;尚、gcc/g++でのプログラムと実行結果は以下のリンク先にあります&lt;br&gt;(g++でマングリングされた型をわかりやすくするためソースに手が入れてあるので)  &lt;p&gt;gcc&lt;br&gt;&lt;a href="http://ideone.com/lpOfq"&gt;http://ideone.com/lpOfq&lt;/a&gt;  &lt;p&gt;g++&lt;br&gt;&lt;a href="http://ideone.com/AC4il"&gt;http://ideone.com/AC4il&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/191969.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>最適化でちょっと感動</title><link>http://blogs.wankuma.com/andochin/archive/2010/07/30/191773.aspx</link><pubDate>Fri, 30 Jul 2010 01:36:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2010/07/30/191773.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/191773.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2010/07/30/191773.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/191773.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/191773.aspx</trackback:ping><description>&lt;p&gt;発端は&lt;/p&gt; &lt;p&gt;&lt;a href="http://codezine.jp/article/detail/5290?p=2"&gt;OpenMPにおける変数の扱いと並列リダクション&lt;/a&gt;&lt;/p&gt; &lt;p&gt;の記事の中ほど、&lt;strong&gt;&lt;font color="#000080"&gt;lastprimitive指示句の使い方を示すサンプル&lt;/font&gt;&lt;/strong&gt;のプログラムと実行結果。&lt;/p&gt; &lt;p&gt;0～9の合計なのに35と出力されているんですよ。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000" size="1"&gt;※彼とその他の人の間で色々あることは知っていますが、僕はそこに関わるつもりは一切ありませんので念のため&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;僕の手元の環境で試してみたら&lt;/p&gt; &lt;p&gt;cl /openmp &lt;em&gt;[filename]&lt;/em&gt;&lt;/p&gt; &lt;p&gt;でコンパイルすると実行結果は45でした。しかし、/Oxを付けると17になりました。OpenMPを使って最適化をかけた時になんかあるんでしょうね。&lt;/p&gt; &lt;p&gt;でも僕はそっち方面には疎いし、生憎興味もありませんので、この件はここにて中断。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そんなわけでOpenMPの指定pragmaは取っ払って最適化をかけたソースを見てみました。こういう最適化は前からあったんだけど、最近見てなかったので忘れてました。&lt;/p&gt; &lt;p&gt;例えばこんなループと結果出力があった場合&lt;/p&gt; &lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( i = 0; i &amp;lt; 10; i++ ) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x += i;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y += i;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf( "%d,%d\n", x, y ); &lt;/font&gt; &lt;p&gt;VCにて最適化指定/Oxだと(VS2008で確認・OFFSET $SG2581はprintfに渡している書式文字列です)&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; 45&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0000002dH&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; 45&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0000002dH&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; OFFSET $SG2581&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; _printf &lt;/font&gt;&lt;/em&gt; &lt;p&gt;g++で最適化指定-O3だと(gcc 4.3.4で確認・$LC0はprintfに渡している書式文字列です)&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; movl&amp;nbsp;&amp;nbsp;&amp;nbsp; $45, 8(%esp)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; movl&amp;nbsp;&amp;nbsp;&amp;nbsp; $45, 4(%esp)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; movl&amp;nbsp;&amp;nbsp;&amp;nbsp; $LC0, (%esp)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; _printf &lt;/font&gt;&lt;/em&gt; &lt;p&gt;どちらも&lt;strong&gt;&lt;font color="#ff0000"&gt;ループなんて消えて計算結果のみがそのままprintfの引数として渡されています&lt;/font&gt;&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;何が言いたいかと言うと&lt;/p&gt; &lt;p align="center"&gt;&lt;strong&gt;&lt;font color="#008000" size="5"&gt;並列化とかテンプレートメタプログラミングとかイラネ&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#808080"&gt;勿論結論は冗談ですよ^^;&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/191773.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>0から1000までの0～9の数を数える</title><link>http://blogs.wankuma.com/andochin/archive/2010/07/23/191490.aspx</link><pubDate>Fri, 23 Jul 2010 01:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2010/07/23/191490.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/191490.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2010/07/23/191490.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/191490.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/191490.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/andochin/archive/2010/07/22/191446.aspx"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;0から1000までの0の数を数える&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;昨日のエントリはちょっとだけ祭りっぽくなったみたい。&lt;/p&gt; &lt;p&gt;&lt;font color="#808080"&gt;# でも炎上とまではいかない。やはり炎上させるには「残念な0～1000」とか「0～1000まで数えるお作法（常識）」みたいなエントリにすべきだった。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;今日は、昨日の拡張で、今度は0～1000までの数に含まれる0～9それぞれを数えてみる。&lt;/p&gt; &lt;p&gt;int n,c,i,j;main(){for(;j&amp;lt;10;printf("%d:%d\n",j,c),j++)for(c=i=n=0;i&amp;lt;1001;n=++i)while(c+=(n%10==j),n/=10);}&lt;/p&gt; &lt;p&gt;まだ140字以内。&lt;/p&gt; &lt;p&gt;出力結果&lt;/p&gt;&lt;pre&gt;0:193
1:301
2:300
3:300
4:300
5:300
6:300
7:300
8:300
9:300&lt;/pre&gt;
&lt;p&gt;まだ140字以内。&lt;/p&gt;
&lt;p&gt;出力結果&lt;/p&gt;
&lt;p&gt;16進数だとこんな感じ&lt;/p&gt;
&lt;p&gt;int n,c,i,j;main(){for(;j&amp;lt;16;printf("%x:%d\n",j,c),j++)for(c=i=n=0;i&amp;lt;0x1001;n=++i)while(c+=(n%16==j),n/=16);}&lt;/p&gt;
&lt;p&gt;出力結果&lt;pre&gt;0:499
1:769
2:768
3:768
4:768
5:768
6:768
7:768
8:768
9:768
a:768
b:768
c:768
d:768
e:768
f:768&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;※自分で数えて確認してないから間違っているかもしれません。&lt;/font&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;pre&gt;昨日のエントリにコメントをいただいて、プログラムも見てみたのですが、やはり数値を文字列化して、その中の”0”の数を数える方法が多いですね。&lt;br&gt;その方法も１つの値ごとに文字列化して数える方法と、全数値の文字列を連結してから0を数える方法がありました。後者の方が簡潔になるでしょう。&lt;br&gt;僕が使っている方法は&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;値の10の余りを計算し、その余りがカウントする数値と一致していたらインクリメント&lt;/li&gt;
&lt;li&gt;値を10で割る&lt;/li&gt;
&lt;li&gt;値が0でなければ1へ、0になったら終了&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;これを0～1000までに対して行っています。&lt;br&gt;while(c+=(n%10==j),n/=10);&lt;br&gt;この部分のnが値、cがカウンタです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/191490.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>あんどちん</dc:creator><title>0から1000までの0の数を数える</title><link>http://blogs.wankuma.com/andochin/archive/2010/07/22/191446.aspx</link><pubDate>Thu, 22 Jul 2010 01:04:00 GMT</pubDate><guid>http://blogs.wankuma.com/andochin/archive/2010/07/22/191446.aspx</guid><wfw:comment>http://blogs.wankuma.com/andochin/comments/191446.aspx</wfw:comment><comments>http://blogs.wankuma.com/andochin/archive/2010/07/22/191446.aspx#Feedback</comments><slash:comments>75</slash:comments><wfw:commentRss>http://blogs.wankuma.com/andochin/comments/commentRss/191446.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/andochin/services/trackbacks/191446.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://hidori.spaces.live.com/Blog/cns!F11BB9FD8E1BC5F9!2495.entry"&gt;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;そんなお題を見つけた&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;のでやってみる。相変わらず目標はtwitterで呟くことが出来る140文字以内。&lt;/P&gt;
&lt;P&gt;int n,c,i;main(){for(;i&amp;lt;1001;n=++i)while(c+=!(n%10),n/=10);printf("%d\n",c);} 
&lt;P&gt;出来た。77文字。&lt;/P&gt;
&lt;P&gt;なんかパターンがマンネリ化している^^;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;今回書いていて今更過ぎる発見をした。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT color=#004000 size=4 face=Mangal&gt;do;while(0);&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;これは合法みたいだ。doの後ろは{}で括るという先入観が有ったから気付かなかった。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/andochin/aggbug/191446.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>