プログラミング言語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 を使う。

末尾のゼロ及び小数点は印字されない。」