3

Boolean が組み込みの列挙型であるかどうか疑問に思っていました。ウィキペディアによると〜

「一部の列挙型は言語に組み込まれている場合があります。たとえばブール型は、多くの場合、値 FALSE と TRUE の事前定義された列挙です。」

http://en.wikipedia.org/wiki/Enumerated_type

Cおよび他の言語では、ブール値は列挙型ですか? そうでない場合は、その理由を説明できますか?

4

2 に答える 2

2

この問題は、C についてというよりも、「型とは何か」についての抽象的で哲学的な問題です。C では、すべて (多かれ少なかれ) は本質的に整数ですが、それは要点を逃しています。

「整数」と言うときは、通常、算術型、つまり、加算や乗算などの算術演算が意味を持つものを指しています。

対照的に、列挙型は、それらの間にそれ以上の構造を持たない離散値のコレクションのみを保持する型です。列挙値が持つ唯一のプロパティはそれ自体です。等しいかどうかをチェックする以外の操作はありません。

忘れてはならないのは、整数も列挙型 (シューズ ラックに入れることができる靴の数や羊の群れのサイズを列挙する) ですが、それだけではありません。彼らが認める操作。

ブール値も同様に、その操作を忘れて、true と false の 2 つの状態を列挙することだけを考慮することにより、列挙型と見なすことができます。ただし、ブール値には、論理演算 (and、or、not など) によって与えられる一連の演算全体が定義されているため、単純な列挙型とは異なります。その意味で、ブール値は「列挙型」よりも「1 ビット整数」に近いものです。

In summary, every discrete type can be thought of as an enum (and is handles identically by most hardware), but enums are the "weakest" of the discrete types, having no structure beyond their identity. By contrast, integers and booleans are discrete types with additional (respectively arithmetic and logical) structure.

于 2013-10-06T16:41:54.510 に答える