プログラミング言語C-共用体続き、入出力
津路です。
プログラミング言語C 第2版 ANSI規格準拠 K&R著(共立出版)を読んで、気になるところを書いています。
共用体について、再度投稿します。
ページ179には、次の共用体サンプルをあげて、以下のように書いてあります。
union u_tag {
int ival;
float fval;
char *sval;
} u;
書籍「変数 u には、三つのタイプのうちの最大値を保持できるだけの十分なスペースがとられる。」
これは、「三つのタイプ(変数)のうちの、最大サイズを保持できるだけの十分なスペースがとられる。」と書くべきでしょう。
使い方については、中に struct 変数を定義してもよいし、struct の中に union 変数を定義してもよいので、こちらのほうが多くの用途があります。
6.9 ビット・フィールド
書籍「特によく使用されるのは、コンパイラの記号表のような、応用における 1 ビット・フラグの集合である。」
この文章の意味がわかるような、でもすっきりしません。「記号表のような、」と切ってあり、応用がいきなり出てくるためでしょうか?
候補「コンパイラの記号表のような用途における、単一ビット・フラグの並びがよく使われる。」とでも?
また、次の文章は特に不可解です。
書籍「ハードウェア機器とのインタフェースのような外部的に強制されるデータ型式においても、1語を分割して使う可能性が必要となることは多い。」
強制される??外部的に??
候補「ハードウェア機器に対するインタフェースのように、外部からの要求に基づくデータ型式においては、ワードを細分して扱う能力を求められることが多い。」
としては、いかがでしょうか?
では、次の文章はわかりますか?
書籍「記号表を処理するコンパイラの部分を想像してみよう。」わかりますね?でも、
候補「コンパイラの、記号表を操作する部分をみてみよう。」のほうが良くないですか?
7.1 標準入出力
演習 7-1 の文章がわかりにくかったです。この書籍では、訳語がよく連なって記述されているためでしょう。
書籍「argv[0] にあるどんな名前で呼ばれたかにより、大文字を小文字に、あるいは小文字を大文字に変換するプログラムを書け。」
候補「呼び出し時の名前(argv[0]など)により、大文字を小文字に、あるいは小文字を大文字に変換するプログラムを書け。」
表7-1 基本的な Printf 変換には、g, G が含まれています。
書籍「double; 指数部が-4小さいか、あるいは精度より大きいか等しいときには %e あるいは %E を、そうでなければ %f を使え、
語尾のゼロ及び小数点は印字されない。」
「-4小さい」は間違い。「使え」も間違いです。
候補「double; 指数部が-4より小さいか、あるいは指定精度以上のときには %e あるいは %E を、そうでなければ %f を使う。
末尾のゼロ及び小数点は印字されない。」