dポイントプレゼントキャンペーン実施中!

C言語になぜ何個も種類があるのですか?
違いはなんでしょうか?

A 回答 (3件)

メーカーによって異なる実装になってることを俗に「方言」と呼びます。



ただ方言があまりにきついと、全然何言ってるかわかんなくなったり、意味が真逆になっちゃったりするから、Cではそれを避けるために仕様書があります。でもそれをどう実装するかは設計者やメーカーの意図を反映することにより変化します。「うちはこうするのが便利だと思っているのでそのように作った」みたいなことですね。そこで複数の実装が存在する結果になるわけです。
    • good
    • 0

異なる言語仕様規格と実装者(メーカー、開発コミュニティ)が有るからです。


規格の方はK&R、C89/C90(ANSI C、ISO C、または標準C)、C99、C11の様に
変遷してきました。
これらの規格を元に、複数の実装者により、C言語製品が作られました。
規格をどれだけ取り入れるか、又は独自の機能(関数)を追加拡張するかは、
各実装者毎に異なります。
#全ての規格を実装していない場合や、古い規格との併存を許可するか否か
#の度合いも、実装者及び製品のバージョンにより異なる場合も有ります。
特に、Microsoft製の物は独自の拡張が多く、標準から大きく異なります。
#他の環境への移植が困難
    • good
    • 0

C言語に何個も種類はありませんよ。


現行ではISO(国際標準化機構)で2011年に制定された、通称C11が一個のみ、です。

多分若干勘違いしてるようなんで、補足説明しておきます。
C言語は先程書いた通り、国際標準化機構で「仕様(specification)」、つまり「文章として」定義されています。
日本ではそれを受けて、JIS(日本工業規格)の方で同様に「仕様書」が公開されています。

JISX3010(C言語)
http://www.jisc.go.jp/app/jis/general/GnrJISNumb …

と言う事は、この仕様書に従って作れば、誰でも「C言語のコンパイラ」なり「インタプリタ」が作れる、って事ですね。
当然、質問者であるohemayuさんが作っても構わないです。
これが「C言語コンパイラがたくさんある」理由です。こういうのを通称「実装」と言うんですが、要するに

「C言語は定義上一つしかないけど、C言語の実装はたくさんある」

わけです。理解出来たでしょうか?
重要なのは「仕様が秘密」なのではなくって「公開されてるから」誰でも仕様に従う限り実装が可能で、必要な部分(と言うのは仕様書全部ですが)さえ実装出来れば「C言語を名乗る事が出来る」とこですね。
(つまり+αで「俺はこの機能が欲しい!」と思ったら追加は可能です)

もう一つの観点として仕様の変遷もあります。国際標準化機構では今まで、都合2回C言語の仕様を改訂しています。
古い仕様に本当は従うべきじゃないんですが、古い仕様に従ったコンパイラも一応「C言語」を名乗ったりしてますね・・・本当は望ましくないんですが。

お分かりいただけたでしょうか?
    • good
    • 5

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!