Skip to Content
21st Century C, 2nd Edition
book

21st Century C, 2nd Edition

by Ben Klemens
May 2025
Intermediate to advanced
408 pages
5h 55m
Japanese
O'Reilly Media, Inc.
Content preview from 21st Century C, 2nd Edition

第7章. 教科書が多くの時間を割いて解説しているCの本質的でない構文

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

それは良いことだと思う

破壊しよう。

パイロスのためのポルノ、"パイロスのためのポルノ"

C言語は比較的簡単な言語かもしれないが、C言語の標準は約700ページもある。

まず、ダイグラフとトリグラフから始めよう。もしあなたのキーボードに{} のキーがなければ、<%%> を代用として使うことができる(int main() <% … %> のように)。これは、世界中のキーボードが多様な習慣に従っていた1990年代には重要なことだったが、今日では波括弧がないキーボードを発見するのは難しい。C99とC11の§5.2.1.1(1)にある三段組の等価性、??<??> は、gccclang の作者がわざわざ解析するコードを実装しなかったほど役に立たない。

トリグラフのような言語の目立たない部分は、誰も触れないので無視しがちだ。しかし、数十年前の教科書では、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行のコードしかないmain1

#include <stdio.h>
int main(){ 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

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Learn C Programming - Second Edition

Learn C Programming - Second Edition

Jeff Szuhay
Tiny C Projects

Tiny C Projects

Daniel Gookin

Publisher Resources

ISBN: 9798341650848