第7章. 教科書が多くの時間を割いて解説しているCの本質的でない構文
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
それは良いことだと思う
破壊しよう。
パイロスのためのポルノ、"パイロスのためのポルノ"
C言語は比較的簡単な言語かもしれないが、C言語の標準は約700ページもある。
まず、ダイグラフとトリグラフから始めよう。もしあなたのキーボードに{ と} のキーがなければ、<% と%> を代用として使うことができる(int main() <% … %> のように)。これは、世界中のキーボードが多様な習慣に従っていた1990年代には重要なことだったが、今日では波括弧がないキーボードを発見するのは難しい。C99とC11の§5.2.1.1(1)にある三段組の等価性、??< と??> は、gcc とclang の作者がわざわざ解析するコードを実装しなかったほど役に立たない。
トリグラフのような言語の目立たない部分は、誰も触れないので無視しがちだ。しかし、数十年前の教科書では、C89の要件に対応するため、あるいは1900年代のコンピューティング・ハードウェアの制限に対処するために、この言語の他の部分について多く触れられていた。制約が少なくなれば、コードを効率化できる。コードを削除し、冗長性を排除することに喜びを感じるなら、この章はあなたのためのものだ。
メインからの復帰を明示する必要はない
ウォーミングアップとして、あなたが書くすべてのプログラムを1行削ってみよう。
あなたのプログラミングには必ずmain 関数が必要で、それはリターン・タイプint でなければならない:
int main(){ ... }
したがって、main によって返される整数を示すreturn 文が必要だと思うだろう。 しかし、C標準では「...メイン関数を終了する} に到達すると、戻り値を0とする」[C99 および C11 §5.1.2.2(3)]と記述されている。つまり、main 関数の最後の行にreturn 0; を書かないと、 とみなされる。
プログラムを実行した後、echo $? を使って戻り値を見ることができることを思い出してほしい。これを使えば、main の最後に到達したプログラムが、確かに常にゼロを返すことを検証できる。
先ほど、このバージョンのhello.cをお見せしたが、#include と1行のコードしかないmain :1
#include <stdio.h>intmain(){printf("Hello, world.\n");}
宣言は流れに任せる
最後に戯曲を読んだときのことを思い出してほしい。本文の冒頭には、登場人物のリストがある。登場人物の名前のリストは、おそらく読み取りを始める前のあなたにはあまり意味がなかっただろうから、私のような人はそのページを飛ばしてそのまま劇の冒頭に進んだ。筋書きの真っ最中にベンヴォーリオが誰だか忘れてしまったとき、戯曲の頭に戻って一行の説明(彼はロミオの友人でモンタギューの甥)を得られるのはありがたいが、それは紙の上で読み取っているからだ。もしテキストがスクリーン上にあれば、ベンヴォーリオの初登場箇所を検索できるだろう。
要するに、ドラマティス・ペルソナは読者にとってあまり役に立たない。文字が初めて登場したときに紹介する方がいいだろう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access