<?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>C++</title><link>http://blogs.wankuma.com/keichan/category/1408.aspx</link><description>C++</description><managingEditor>keichan (keichan@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>[C++][MFC] MBCS で CProgressCtrl::SetMarquee()</title><link>http://blogs.wankuma.com/keichan/archive/2008/09/18/156892.aspx</link><pubDate>Thu, 18 Sep 2008 14:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2008/09/18/156892.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/156892.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2008/09/18/156892.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/156892.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/156892.aspx</trackback:ping><description>昨日の続き。&lt;BR&gt;
&lt;BR&gt;
MBCS で CProgressCtrl::SetMarquee() と同等の振舞いをさせるには以下のようにする。&lt;BR&gt;
&lt;BR&gt;
1. PBM_SETMARQUEE を SendMessage する&lt;BR&gt;
　　CProgressCtrl* pWnd;&lt;BR&gt;
　　pWnd-&gt;SendMessage( PBM_SETMRQUEE, ... );&lt;BR&gt;
&lt;BR&gt;
2. Windows XP ビジュアルスタイルに変更する(*)&lt;BR&gt;
　　http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.aspx を参照&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;
 * ... MBCS でコンパイルするとXPスタイルを使用する manifest ファイルを自動生成してくれない&lt;BR&gt;
　　　 UNICODE 時は XPスタイルを含んだ manifest ファイルを自動生成する&lt;BR&gt;
&lt;BR&gt;
&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/156892.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>[C++][MFC] CProgressCtrl::SetMarquee</title><link>http://blogs.wankuma.com/keichan/archive/2008/09/17/156824.aspx</link><pubDate>Wed, 17 Sep 2008 20:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2008/09/17/156824.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/156824.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2008/09/17/156824.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/156824.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/156824.aspx</trackback:ping><description>UNICODE 定義時にしか使えません。
...なんでやねんorz&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/156824.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>[C++][MFC] MFCクラスの派生クラスにtemplateを使用する</title><link>http://blogs.wankuma.com/keichan/archive/2008/06/18/144346.aspx</link><pubDate>Wed, 18 Jun 2008 21:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2008/06/18/144346.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/144346.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2008/06/18/144346.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/144346.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/144346.aspx</trackback:ping><description>&lt;P&gt;CWnd を派生させた自作クラスに template class を使いたくて、使い方を調べました。&lt;/P&gt;
&lt;P&gt;MSDNでヒットしたので、&lt;A href="http://msdn.microsoft.com/ja-jp/library/aa986916(VS.80).aspx"&gt;そちら&lt;/A&gt;を参考にしました。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ふむ。&lt;/P&gt;
&lt;P&gt;BEGIN_MESSAGE_MAP() を BEGIN_TEMPLATE_MESSAGE_MAP() にするだけでいいのか。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;template class 内の関数宣言のところで右クリックすると確実にフリーズします。(VC8)&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;template&amp;lt;typename T&amp;gt;&lt;TYPENAME T&gt;&lt;TYPENAME T&gt;&lt;/P&gt;
&lt;P&gt;class Hoge : public CWnd&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void hage();&amp;nbsp;&amp;nbsp; &lt;FONT color=#006400&gt;// ←ここで右クリック&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;#include "hogeImpl.cpp"&amp;nbsp; &lt;FONT color=#006400&gt;// 定義部はcppに記述&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;フリーズというか、カーソルのアイコンが砂時計になったまま戻ってこないです。&lt;/P&gt;
&lt;P&gt;私の場合、[右クリック → 定義へ移動] を多用するので、癖で右クリックしてしまってよく固めちゃいます。&lt;/P&gt;
&lt;P&gt;この現象にあわれた方いらっしゃいませんか？&lt;/P&gt;
&lt;P&gt;対処法をググってみたんですが、見つけられず。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;追記(6/23 14:45)&lt;/P&gt;
&lt;P&gt;F12 キーでも固まりました。&lt;/P&gt;
&lt;P&gt;どうやらジャンプ先が見つけられず永遠と検索しているような感じです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/144346.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>boost 1.34.1</title><link>http://blogs.wankuma.com/keichan/archive/2007/10/18/102832.aspx</link><pubDate>Thu, 18 Oct 2007 18:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/10/18/102832.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/102832.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/10/18/102832.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/102832.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/102832.aspx</trackback:ping><description>&lt;P&gt;全然チェックしてなかったんですが、出てたんですね・・・ 3ヶ月も前に。&lt;/P&gt;
&lt;P&gt;サクっとダウンロードしてインストール。&lt;/P&gt;
&lt;P&gt;そして、libの作り方を毎回忘れてる事に気付く。&lt;/P&gt;
&lt;P&gt;あれ～。。。どうだったかな（汗）&lt;/P&gt;
&lt;P&gt;bjam ごにょごにょ&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/102832.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>C++ 0x</title><link>http://blogs.wankuma.com/keichan/archive/2007/10/16/102374.aspx</link><pubDate>Tue, 16 Oct 2007 17:57:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/10/16/102374.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/102374.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/10/16/102374.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/102374.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/102374.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://ja.wikipedia.org/wiki/C%2B%2B0x"&gt;http://ja.wikipedia.org/wiki/C%2B%2B0x&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;wikiで日本語解説見つけたので、ちょっと読んでみようとプリントアウトしたら48ページだって。&lt;/P&gt;
&lt;P&gt;「ちょっと」じゃ読めないｗｗｗ&lt;/P&gt;
&lt;P&gt;明日読みます。仕事中にでも･･･&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/102374.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>プログラミング言語C コンパイルエラーの答えあわせ</title><link>http://blogs.wankuma.com/keichan/archive/2007/10/10/101095.aspx</link><pubDate>Wed, 10 Oct 2007 16:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/10/10/101095.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/101095.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/10/10/101095.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/101095.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/101095.aspx</trackback:ping><description>&lt;P&gt;ちなみにネタ元は&lt;A href="http://www.play21.jp/board/formz.cgi?action=res&amp;amp;resno=10508&amp;amp;page=40&amp;amp;lognum=&amp;amp;id=dixq&amp;amp;rln=10615&amp;amp;vino=37"&gt;こちら&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;引用は JISX 3010:2003 を用いています。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;6.4 字句要素&lt;BR&gt;構文規則&lt;BR&gt;&amp;nbsp;字句：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;キーワード&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;識別子&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;定数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;文字列リテラル&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;区切り子&lt;BR&gt;&amp;nbsp;前処理字句：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ヘッダ名&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;識別子&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;文字定数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;文字列リテラル&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;区切り子&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;上野分類のいずれにも当てはまらない非空白類文字&lt;/P&gt;
&lt;P&gt;6.4.8 前処理数&lt;BR&gt;構文規則&lt;BR&gt;&amp;nbsp;前処理数：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;数字&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;. 数字&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 数字&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 識別子用非数字&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 e符号&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 E符号&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 p符号&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 P符号&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;前処理数 .&lt;/P&gt;
&lt;P&gt;補足説明　前処理数は，省略可能な先行するピリオド（.）をもつ数字で始まる。その後ろに正しい識別&lt;BR&gt;子用文字及び文字の並びe+，e-，E+，E-，p+，p-，P+又はP-が続いてもよい。&lt;/P&gt;
&lt;P&gt;意味規則　前処理数は，型も値ももたない。型と値は，[翻訳フェーズ（7）で] 浮動小数点定数字句又は&lt;BR&gt;整数定数字句に変換された結果として決まる。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;では、翻訳フェーズとはなんぞや？と調べてみると&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;BR&gt;5.1.1.2 翻訳フェーズ　次に示すフェーズによって，翻訳上の構文規則間の優先順位を規定する&lt;BR&gt;(1) 必要ならば，物理的なソースファイルの多バイト文字を，対応するソース文字集合に，処理系定義&lt;BR&gt;　　の方法で，写像する（この際，行の終わりを示すものに対して改行文字を導入する。）。3 文字表記&lt;BR&gt;　　を，対応する単一の文字の内部表現に置き換える。&lt;BR&gt;(2) 逆斜線文字（\）の直後に改行文字が現れた場合，それらの2文字を削除する。これによって物理ソ&lt;BR&gt;　　ース行を接合して論理ソース行を作成する。一つの物理ソース行においてこの接合の対象となるの&lt;BR&gt;　　は，その行の最後の逆斜線文字だけとする。空でないソースファイルは，改行文字で終了しなけれ&lt;BR&gt;　　ばならない。さらに，この改行文字の直前に（接合を行う前の時点で）逆斜線文字があってはなら&lt;BR&gt;　　ない。&lt;BR&gt;(3) ソースファイルを，前処理字句及び空白類文字（注釈を含む。）の並びに分割する。ソースファイ&lt;BR&gt;　　ルは，前処理字句の途中又は注釈の途中で終了してはならない。各注釈を，一つの空白文字に置き&lt;BR&gt;　　換える。改行文字を保持する。改行文字を除く空白類文字の並びを保持するか一つの空白文字に置&lt;BR&gt;　　き換えるかは，処理系定義とする。&lt;BR&gt;(4) 前処理指令を実行し，マクロ呼出しを展開する。さらに，_Pragma 単項演算子式を実行する。字句&lt;BR&gt;　　連結（6.10.3.3参照）の結果として生成される文字の並びが国際文字名の構文規則に一致する場合，&lt;BR&gt;　　その動作は未定義とする。#include 前処理指令に指定された名前を持つヘッダ又はソースファイ&lt;BR&gt;　　ルに対して，フェーズ（1）からフェーズ（4）までの処理を再帰的に行い，すべての前処理指令を&lt;BR&gt;　　削除する。&lt;BR&gt;(5) 文字定数及び文字列リテラル中のソース文字集合の各要素及び各逆斜線表記を，それぞれに対応す&lt;BR&gt;　　る実行文字集合の要素に変換する。対応する要素が存在しない場合，ナル（ワイド）文字以外の処&lt;BR&gt;　　理系定義の要素に変換する。&lt;BR&gt;(6) 隣接する文字列リテラル字句同士を連結する&lt;BR&gt;(7) 字句を分離している空白類文字は，もはや意味を持たない。各前処理字句を字句に変換する。その&lt;BR&gt;　　結果，生成された字句の列を構文的及び意味的に解析し，翻訳単位として翻訳する。&lt;BR&gt;(8) すべての外部オブジェクト参照及び外部関数参照を解決する。その翻訳単位中に定義されていない&lt;BR&gt;　　関数及びオブジェクトへの外部参照を解決するため，ライブラリの構成要素を連係する。これらす&lt;BR&gt;　　べての翻訳出力をまとめて，実行環境上での実行に必要な情報を含む一つのプログラムイメージを&lt;BR&gt;　　作る。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;つまり、前処理字句を字句に変換する時に 0xfefe+1 を「整数定数字句(0xfefe) + 整数定数字句(1)」と変換せずに&lt;BR&gt;「浮動小数点字句(0xfefe+1)」と変換してしまい、浮動小数点字句(0xfefe+1)をコンパイラが理解できずエラーが&lt;/P&gt;
&lt;P&gt;発生する。という流れになっています。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;このエラーを出さないようにするには'+'の前に空白類文字を追加すれば解決します。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;ということで、iさん、かつのりさん正解です。おめでとうございます。&lt;/P&gt;
&lt;P&gt;#ちなみにVSコンパイラでエラーにならないのは、ユーザーがこんなことでドはまりしないように&lt;BR&gt;#との対処かな。と邪推してみる&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/101095.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>プログラミング言語C コンパイルエラー</title><link>http://blogs.wankuma.com/keichan/archive/2007/10/09/100670.aspx</link><pubDate>Tue, 09 Oct 2007 16:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/10/09/100670.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/100670.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/10/09/100670.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/100670.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/100670.aspx</trackback:ping><description>&lt;P&gt;以下のコードで、コンパイルエラーが発生する。&lt;/P&gt;
&lt;P&gt;なぜでしょう？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;int main()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;int i = 0xfefe+1;&lt;BR&gt;&amp;nbsp;printf("%d\n", i);&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;回答は次回のエントリで。&lt;/P&gt;
&lt;P&gt;#私はこのコンパイルエラーに遭遇したことは残念ながらありません＾＾；&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/100670.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>プログラミング言語C　3文字表記(trigraph sequence)</title><link>http://blogs.wankuma.com/keichan/archive/2007/09/12/95727.aspx</link><pubDate>Wed, 12 Sep 2007 17:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/09/12/95727.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/95727.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/09/12/95727.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/95727.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/95727.aspx</trackback:ping><description>&lt;P&gt;久しぶりの更新です。こんにちは、keichanです。&lt;/P&gt;
&lt;P&gt;今回は余り知られていない感じのする3文字表記(trigraph sequence)を取り上げてみます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JIS X 3010:2003(ISO/IEC 9899:1999) 5.2.1.1 3文字表記&lt;BR&gt;には以下の3文字表記があると記述されている。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;??=　→　#&lt;BR&gt;&amp;nbsp;??(　→　[&lt;BR&gt;&amp;nbsp;??/　→　\&lt;BR&gt;&amp;nbsp;??)　→　]&lt;BR&gt;&amp;nbsp;??'　→　^&lt;BR&gt;&amp;nbsp;??&amp;lt;　→　{&lt;BR&gt;&amp;nbsp;??!　→　|&lt;BR&gt;&amp;nbsp;??&amp;gt;　→　}&lt;BR&gt;&amp;nbsp;??-　→　~&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;今回調べて初めて知ったのが「#」に対応する3文字表記が存在していたこと。&lt;BR&gt;そこで3文字表記を使ったコードを書いてみた。(コンパイラはVisual Studio 2005 Professional Editionを使用)&lt;/P&gt;
&lt;P&gt;処理内容は、全く意味がありません。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;U&gt;&lt;STRONG&gt;&lt;FONT size=5&gt;変換前コード&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/U&gt;&lt;BR&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;#define&amp;nbsp;SWAP(x,y)&amp;nbsp;&amp;nbsp;\&lt;BR&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\&lt;BR&gt;&amp;nbsp;&amp;nbsp;int tmp = x;&amp;nbsp;\&lt;BR&gt;&amp;nbsp;&amp;nbsp;x = y;&amp;nbsp;&amp;nbsp;&amp;nbsp;\&lt;BR&gt;&amp;nbsp;&amp;nbsp;y = tmp;&amp;nbsp;&amp;nbsp;\&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;int main(void)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;int int_array[5] = { 1, 2, 3, 4, 5 };&lt;BR&gt;&amp;nbsp;int a = int_array[3] ^ int_array[4];&lt;BR&gt;&amp;nbsp;SWAP(*int_array, *(int_array + 2));&lt;BR&gt;&amp;nbsp;if( a &amp;lt; 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;a = ~a | int_array[0];&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT size=5&gt;&lt;STRONG&gt;&lt;U&gt;3文字表記を可能な限り使用したコード&lt;/U&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;??=include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;??=define&amp;nbsp;SWAP(x,y)&amp;nbsp;??/&lt;BR&gt;&amp;nbsp;??&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;??/&lt;BR&gt;&amp;nbsp;&amp;nbsp;int tmp = x;&amp;nbsp;??/&lt;BR&gt;&amp;nbsp;&amp;nbsp;x = y;&amp;nbsp;&amp;nbsp;&amp;nbsp;??/&lt;BR&gt;&amp;nbsp;&amp;nbsp;y = tmp;&amp;nbsp;&amp;nbsp;??/&lt;BR&gt;&amp;nbsp;??&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;int main(void)&lt;BR&gt;??&amp;lt;&lt;BR&gt;&amp;nbsp;int int_array??(5??) = ??&amp;lt; 1, 2, 3, 4, 5 ??&amp;gt;;&lt;BR&gt;&amp;nbsp;int a = int_array??(3??) ??' int_array??(4??);&lt;BR&gt;&amp;nbsp;SWAP(*int_array, *(int_array + 2));&lt;BR&gt;&amp;nbsp;if( a &amp;lt; 0 ) ??&amp;lt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;a = ??-a ??! int_array??(0??);&lt;BR&gt;&amp;nbsp;??&amp;gt;&lt;BR&gt;??&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;よ・・・読めない・・・・きっとIOCCCに提出するコードくらいしか見かけないと思うんですが。&lt;/P&gt;
&lt;P&gt;でも、コンパイルは通る（アタリマエ）&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/95727.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>プログラミング言語C の答え。</title><link>http://blogs.wankuma.com/keichan/archive/2007/08/30/92764.aspx</link><pubDate>Thu, 30 Aug 2007 14:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/08/30/92764.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/92764.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/08/30/92764.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/92764.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/92764.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/keichan/archive/2007/08/28/92383.aspx"&gt;プログラミング言語C&lt;/A&gt;　の答え&lt;/P&gt;
&lt;P&gt;本題に入る前にお詫びを・・・&lt;/P&gt;
&lt;P&gt;前回のエントリのコメントで答えは0になる時、1になる時両方あり得るなんて言っちゃいましたが&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=6&gt;ウソ&lt;/FONT&gt;でした。ごめんなさい。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;今回仕事で丁度このネタが発生して実際に0と出力されました。&lt;BR&gt;(VC6,VC8 では1と出力されました)&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;int main(void)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;int flag = 0;&amp;nbsp;// なんかのフラグ機能&lt;BR&gt;&amp;nbsp;flag = 1;&amp;nbsp;// 気分的に1にしちゃう&lt;BR&gt;&amp;nbsp;printf("%d\n", flag);&amp;nbsp;// 出力&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;原因は「//なんかのフラグ機能」の【能】のShift-JISによる文字コードが 0x945c であることが問題でした。&lt;BR&gt;下位WORDの 5c は \ 相当になってしまうため、次行も同一行として認識され、flag = 1; がコメント扱いになっていました。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;これは規格ではどう定義されているのか、確認せずに前回エントリを投稿してしまったために、ウソ書いてしまいました。&lt;/P&gt;
&lt;P&gt;以下抜粋&lt;BR&gt;
&lt;HR id=null&gt;
JIS X3010 : 2003(ISO/IEC 9989 : 1999) 6.4.9 注釈&lt;BR&gt;文字定数，文字列リテラル又は注釈の中を除いて，文字の並び//は注釈の始まりを示す。&lt;BR&gt;この形式の注釈は，次の改行文字までのすべての多バイト文字を含むが，改行文字自身は含まない。&lt;BR&gt;注釈の内容は，多バイト文字を識別すること及び注釈を終了させる改行文字を探すことだけのために調べる。
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;きっちり&lt;STRONG&gt;多バイト文字を識別すること&lt;/STRONG&gt;って書いてあります。&lt;/P&gt;
&lt;P&gt;ということは規格的には1と出力されるのが正解で、0はあり得ない事になるはずですよね？&lt;/P&gt;
&lt;P&gt;そこで私が使用していた処理系(CC900)のコンパイルオプションを調べてみると -j なるものがあり、&lt;/P&gt;
&lt;P&gt;日本語文字を認識するようになります。と書かれてありました(゜ー゜;)&lt;/P&gt;
&lt;P&gt;-j オプションを付加してコンパイルしなおすと1と出力されました。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;結局言語の問題ではなくて文字コードの問題だったっていうオチです。&lt;/P&gt;
&lt;P&gt;申し訳ありませんでした。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/92764.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>keichan (keichan@wankuma.com)</dc:creator><title>プログラミング言語C</title><link>http://blogs.wankuma.com/keichan/archive/2007/08/28/92383.aspx</link><pubDate>Tue, 28 Aug 2007 17:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/keichan/archive/2007/08/28/92383.aspx</guid><wfw:comment>http://blogs.wankuma.com/keichan/comments/92383.aspx</wfw:comment><comments>http://blogs.wankuma.com/keichan/archive/2007/08/28/92383.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/keichan/comments/commentRss/92383.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/keichan/services/trackbacks/92383.aspx</trackback:ping><description>&lt;P&gt;以下のソースコードにおいて、標準出力に出力される数字を答えよ。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;
&lt;HR id=null&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;int main(void)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;int flag = 0;&amp;nbsp;// なんかのフラグ機能&lt;BR&gt;&amp;nbsp;flag = 1;&amp;nbsp;// 気分的に1にしちゃう&lt;BR&gt;&amp;nbsp;printf("%d\n", flag);&amp;nbsp;// 出力&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;あるあるネタですね^^&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/keichan/aggbug/92383.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>