* 連載・仕組みから理解するC言語 [#u15a490a] -日経ソフトウェア2007年7月~2008年6月号 -全12回 -対象処理系: Visual C++ 2005 (Cコンパイラとして使用) -入門者向けの[[連載/300.みんな納得! のっけからC言語]]内のコーナーとして連載された中上級者向け連載 -記事内の記事であるため、2~3ページの比較的短い連載であることが特徴。そのため、掲載時にカットされた原稿がかなり多い -内容は全面改定され、連載時にカットされた原稿も復活、対象処理系をVisual C++ 2008/MinGWに変更して[[単行本/100.C言語教科書【入門編】]]の続編に収録予定 ** 第1回 ビット演算の不思議 [2007年7月号掲載] [#h7c9fd17] ビット演算子と論理演算子の違い XORによる暗号化プログラム ** 第2回 「数値」と「文字」は違うけど同じもの [2007年8月号掲載] [#te1c3ff0] printf関数の悪夢 文字化けがなくても文字は化けている 言語を切り替えるchcpコマンド ** 第3回 メモリーとアドレスからポインタを理解する [2007年9月号掲載] [#r83ad63c] ポインタ一つで配列から配列にコピーする アドレスありきで考えよ! 見た目通りではない「配列の正体」とは? 禁じ手なのに学ぶ価値がある ** 第4回 1を足すと4増える,ポインタと型の悩ましい関係 [2007年10月号掲載] [#vea5be28] 1を足しても1増えない理由 強引に割り込むと何が起こるか ** 第5回 サイズ合計が全体サイズと一致しない,構造体のミステリー!? [2007年11月号掲載] [#lf9e74d9] 並び順を変えてサイズが変わる例 無駄遣いを排除するには? めでたしめでたし…ではない それでも#pragma packが要るケース ** 第6回 不可解な計算結果を導き出す,実数計算のミステリー [2007年12月号掲載] [#fa5ac53b] 浮動小数点という仕組み 見た目と実際の割り切れなさ 誤差の出る値,出ない値 絶対に安全な計算 ** 第7回 時の迷宮・トラップだらけの日付/ 時刻処理 [2008年1月号掲載] [#f01529ee] 同じ値でも違う結果が出る 「協定世界時」をベースに時差と夏時間を加味 「未来の問題」では済まない2038年問題 安全な日付/時刻処理の指針 ** 第8回 引数が違っても呼び出せる!? 関数定義と呼び出しのミステリー [2008年2月号掲載] [#c4c4104b] ミステリー1:引数の数と型が一致しない呼び出し 解答編1:初期のCは厳格な引数指定ができない 関数原型宣言で安全な前方参照を ミステリー2:返却値の暗黙的な宣言 解答編2:リンク時に型の不一致が見逃される ヘッダー・ファイルで情報を共有する ミステリー3:関数原型宣言なしで安全に呼び出せる? 解答編3:関数ポインタを利用する ** 第9回 共用体がもたらす安全と危険 [2008年3月号掲載] [#r7813c51] 異なる型の値を同じメモリーに保持できる float版暗号化プログラムを作る 共用体を使うことで安全性が向上する ** 第10回 相当使えるソート機能「qsort」 [2008年4月号掲載] [#vfb9b9f0] qsortの関数ポインタは怖くない 「決まったサイズ」,「連続したデータ」ならなんでもOK qsortのわな:交換されるメモリー qsort関数,第2の問題の解決策qsort_s関数 ** 第11回 「シフトJIS」と「US-ASCII」,区別するときしないとき [2008年5月号掲載] [#j46c6700] ●str系でもシフトJISを扱えるケース ●str系でシフトJISを扱えないケース _mbsに置き換えれば済むか? 文字列の「長さ」はバイト数か文字数か 名前の読み方 ** 最終回(第12回) 文字の迷宮を解決するUnicode プログラミング [2008年6月号掲載] [#w576ab42] 日本語の文字を文字定数として使える ラフなコードでも日本語を処理できる 悪夢の再来か?! 「サロゲート・ペア」の問題 致命的な欠陥は取り除かれている UTF-8という別解 終わりに