シンメトリック公式BLOG
システム開発のノウハウをまとめています

C

EOF判定の注意点

 C言語を勉強してきた中で私の致命的な思い違いシリーズの第三弾です。 第一弾「C言語では signed と unsigned の違いで挙動がこんなにも変わる!」 第二弾「C言語、暗黙の型変換と符号拡張の落とし穴」 今回は、練習で「標準入力からテキストを読み込んで行数をカウントする」という簡単なプログラ …

暗黙の型変換と符号拡張とは?

 C言語を勉強してきた中で私の致命的な思い違いシリーズの第二弾です。 第一弾「C言語では signed と unsigned の違いで挙動がこんなにも変わる!」 第三弾「C言語でEOFをchar型で比較してまずいのはなぜ?」 今回は、暗黙の型変換と符号拡張についてです。 次のコードの出力結果はどうなる …

コンパイラの最適化によるデメリット

 以前C言語で、業務とはまったく関係のないお遊びプログラムを作っている時に、不可解な現象に悩まされました。 とある関数の内部で、呼び出し元の情報を書き換えて、関数を抜け出す時に本来の戻り先とは別の戻り先に制御を移すという、ちょっと変な処理を行うものです。 この時は何か目的があってプログラミングをしてい …

NULL文字を含むときはstrcmp/strncmpを使わない

 弊社製品ラウンドアバウトが先日正式リリースされた。僕はラウンドアバウトの開発メンバーだったから、やっと完成したという大きな達成感がある。 しかし、その開発期間を思い起こしてみると、C言語特有の問題に直面し、実に苦労すること多かった。ラウンドアバウトはApacheモジュールなので開発言語はC言語となる …

コンパイラの最適化とは?

 最近のCコンパイラは、プログラマが意図して行った最適化よりも賢く、 最適なコードを生成するといいます。 昔「2の倍数で割るなら割り算使うより、シフト演算の方が早いからそう書け!」と言われたことがあります。確かに、div命令とsar命令ではクロック数はdiv命令の方が遥かに多かったと思いますが、実際の …

Page Top