出版社内容情報
C言語は50年以上の歴史があり,組み込み機器を開発する上では現在でも主力のプログラミング言語です.バグの許されない分野でも多く使われることから,作成したプログラムに対して高い信頼性が要求されます.
そんなC言語ですが,移植性が低いという問題があります.誕生当初は移植性が高いとの触れ込みでしたが,その利用用途が拡大するにつれ,疑問の声が聞かれるようになりました.これはC言語のあいまいな言語仕様によるものです.
C言語のあいまいな言語仕様の一例を以下に示します.
char a;
a = 200;
if( a == 200 )
char型の変数に200を代入していますが,このプログラムを実行すると,マイコンや処理系(コンパイラ)によって結果が真になったり偽になったりします.詳しくは本書で解説しますが,この原因はchar型の符号の有無が言語仕様で決まっていないためです.このプログラムは,今の環境でたまたま真になっていても,移植したら偽になって正常に動作しなくなる可能性があります.
そこで本書では,C言語文法の何があいまいであり,それを使用するとどのような問題が発生するのか,それをちゃんと理解していただくことを目的とし,文法のあいまいな部分を通りながら,さまざまなマイコン処理系で移植性の高いソフトウェアが開発できることを目指します.
本書の内容を理解すると,C言語の文法理解度,組み込みにおける移植性と効率向上に対する知識はプロの域に達します.
それではビックリするようなC言語文法のあいまいさを思う存分,お楽しみください.
【目次】
★目次
◎あいまいな仕様,環境依存……つまずきやすい場所を徹底解説
☆信頼性&再利用性を高めるC言語プログラミング
●第1章 整数型
1.値の範囲
整数型の値の範囲は曖昧である
2.負の値の表現形式
整数型の負の値は表現形式が規定されていない
3.代入規則
代入の規則は代入先の型で変わる
4.符号反転
符号なし整数型を符号反転すると結果は必ず最大値+1の剰余になる
5.整数の格上げ
char型やshort型を使っても「整数の格上げ」でint型に拡張されてしまう
6.算術変換規則
int型の精度によって結果が変わる整数型の算術変換規則
7.整数定数
整数定数の型の割り当てと接尾子
●第2章 浮動小数点型
8.内部表現
浮動小数点型には内部表現の規定がない
9.誤差
誤差により値を正確に表現できない場合がある
10.性能
浮動小数点型を高速・高効率に演算する方法はマイコンごとに異なる
11.精度
適切な精度で演算しないと性能が悪くなる
●第3章 派生型
12.typedef
難しい配列やポインタはtypedefで分かりやすくなる
13.構造体
マイコンで構造体を使うときの作法とテクニック
14.共用体
共用体は適正に利用すればメモリ量の削減に効果を発揮する
15.ビット・フィールド
文法も曖昧だが…周辺機能の制御に向く
●第4章 演算子
16.演算子の小括弧
演算順を決めるものとは別物!演算子の小括弧は「関数呼び出し」に使う
17.添字演算子と間接演算子
添字演算子[ ]と間接演算子*…実は全く同じ意味
18.後置インクリメント(デクリメント)
優先順位と演算タイミングを別々に考えるべし
19.キャスト演算子
実はそれほど必要ではない
20.汎用ポインタ
便利なポインタ型だが…
21.乗法演算子と加法演算子
整数型だと数学の交換法則は成り立たない
22.乗除算の仕様
C言語とマイコンとでは異なる
23.加法演算子による演算
ポインタ型と整数型の演算に使うと,演算結果はポインタ型になる
24.シフト演算子
制約とダイナミック・シフト命令の有無に注意
25.関係演算子
比較結果を利用して条件分岐を効率よく実行できる場合もある
26.等値演算子
ゼロとの比較をする場合は注意が必要
27.ビットごとの論理演算子
意外と優先順位が低い
28.論理演算子
副作用を伴う式は使用禁止
29.条件演算子
if文と使い方が異なることに注意
30.カンマ演算子
プログラムを効率的に記述できる<
-
- 電子書籍
- 花に雨、彼女には彼(8) カフネ
-
- 電子書籍
- 私を愛する3人の旦那さま【タテヨミ】 …



