ホームページ  >  記事  >  バックエンド開発  >  C と C にダイグラフがまだ存在するのはなぜですか?

C と C にダイグラフがまだ存在するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 16:53:26637ブラウズ

Why are digraphs still present in C and C  ?

C および C における有向グラフの目的の探求

プログラミングの世界では、有向グラフは C99 および C の歴史において独特の位置を占めています。 %:include や <::> などの構文を使用すると、ダイグラフは古風で謎めいた機能のように思われるかもしれません。それでは、その存在の背後にある理論的根拠を詳しく調べてみましょう。

ダイグラフとキーボード制約

ダイグラフの起源は、プログラマがキーボードをサポートしていないことがよくあった時代に遡ります。完全な ISO 646 文字セット。この制限により、パーセント記号 (%) や角括弧 ([]) などの特定の記号を表現する能力が妨げられました。

この課題を克服するために、C の作成者は、ダイグラフという賢い解決策を考案しました。これらの 2 文字のシーケンスは欠落しているシンボルを表しており、プログラマは 16 進数コードや他の面倒な方法に頼ることなくハードウェアの制約を回避できます。

重要な事例

C99 の次の例を考えてみましょう。

<code class="c">%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE 512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%></code>

このスニペットでは、%: ダイグラフがパーセント記号の代わりに使用され、#include プリプロセッサ ディレクティブが有効になります。同様に、<::>は、コピー関数の定義内で s パラメータと d パラメータを囲む角括弧を表します。

ダイグラフがなければ、ISO 646 サポートのないキーボードを使用するプログラマは次のように記述する必要があります。

<code class="c">#include <stdio.h>

#ifndef BUFSIZE
 #define BUFSIZE 512
#endif

void copy(char d[__$$__], const char s[__$$__], int len)
__$$__
    while (len-- >= 0)
    __$$__
        d[__$$__len__$$__] = s[__$$__len__$$__];
    __$$__
__$$__</code>

ご覧のとおり、この代替表記は非常に扱いにくく、読みにくくなります。有向グラフは、この問題に対する簡潔で便利な解決策を提供します。

結論

有向グラフは過去の遺物のように見えるかもしれませんが、C99 および C99 の開発におけるその歴史的重要性は、 Cは否めない。これらは、ハードウェアの制限に対する実用的な解決策として登場し、プログラマーがキーボード上の特定の記号の利用可能性に制約されることなくコードを作成できるようにします。

以上がC と C にダイグラフがまだ存在するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。