C言語キーワードの概要-Bool

3403 ワード

###C言語キーワードシリーズ###
###ISO/ANSICキーワード###
_BoolキーワードはC言語の他の一般的なキーワードではなく、変数名のように見えます.
このような下線の先頭のキーワードはC言語で3つあります:Bool、_Complex、_Imaginary
CまたはC++言語のboolタイプを知っていれば、Boolはboolタイプを最初に連想するかもしれませんが、実際にはそれほど悪くありません.
 
_Boolの役割は次のとおりです.
ブール変数を宣言します.
 
1、_Boolの使用
変数を定義するタイプのキーワードと同じように、Boolは、ブール変数を次のように定義します.
/*          */
int i;
_Bool input_over;   /*                 */
input_over = scanf("%d", &i);
while (!input_over)
{
	printf("Error, input again:");
	scanf("%d", &i);
}

普通、一つ_Bool変数には2つの値しかありません.1/0で、それぞれ真/偽を表します.これをゼロ以外の値に割り当てると、変数は1に割り当てられます.
だから_Boolタイプでは、論理式ではゼロ以外の値は「真」とみなされ、0だけが「偽」を表す
 
2、_Bool、BOOL、boolバカ見分けがつかない
役割上、三つともブールのタイプを表すことができますが、彼らは自分の物語を持っていて、本質的な違いさえあります.
(1)BOOL
前世紀後半に生まれ、コンピューター科学に従事すれば、当時のC言語にはboolのようなタイプはなかったことがわかります.では、このようなブール関係をどのように表現しますか?
マイクロソフトは、typedefがあるのではないかと主張し、BOOLというタイプを定義したが、本質は:
typedef int BOOL;
つまり、BOOLタイプは実はintタイプなので、32ビットintのマシンにメモリを置くのは4 byteで、これは実際には後のboolより何倍も大きいです
今Cプログラムを书く时BOOLはあまり使わないかもしれませんが、BOOLを使う必要がある场合は、元のカスタマイズを覚えて、自分でプログラムに追加したり、パッケージを引用したりすることができます.
でも今はブールタイプを書くのに一般的に使われています.Boolとbool
(2)bool
実はC 99以前、C言語にはboolタイプという言い方はありませんでしたが、C言語ではboolタイプは舶来語、外来客に相当します
これは塵封の歴史です.重要なノードは1992年、Microsoft Visual C++1.0が発売されました.これまで、マイクロソフトはカスタムBOOLタイプを使用してブール変数を表していましたが、ブール変数のboolは実はイギリスの数学者ジョージ・ブール(George Boole)に由来しています.
92年以前は、Cの「ブールタイプ」は整数タイプで表されていたが、C++の発売でboolタイプの定義が現れ、boolタイプはC++の基準の中で最初から存在していたことに注意した.Cの拡張としてのC++にはboolの定義があり、C自身は当時もブールタイプの定義を持っていなかったため、C 99規格に新たに_Boolタイプ、その本質と使い方はC++のboolと似ています.
ただし、現在のC言語バージョンではサポートされていないことに注意してください.Boolはboolを支持しないで、C++の中でも必ずしも支持しない_Boolでboolを使うのも両者の違いです.そのつながりは,用法差が少なく,本質も類似しており,いずれも1 byteメモリのみを占有していることである.実は原理的には1 bitで真偽を表すことができますが、C言語ではゼロ以外の値はすべて真を表し、0は偽を表し、1 byteのメモリはユーザーが他のゼロ以外の値で真を表すことを許可し、いくつかのプログラムの実現上の便利さをもたらす可能性があります.
(3)_Bool
つまり、C言语はその后のショーC++の中で最初からboolタイプの定义があって、自分は依然として整型を使ってブール関系を表して、感心しません
一気にC 99に追加されました_Boolタイプ、しかもboolとは違うように見えて、ちょっとマイペースな意味がありますが、C++のboolは確かにCの_Boolが現れたのは早い
 
3、C言語標準の発展史
1978年、国内は改革開放に当たって、大洋の対岸にもコンピュータ業界内で比較的に騒ぎがあった--K&R C標準が現れた.
K&Rは実は2人の大神で、Brian KernighanとDennis Ritchieの略称で、後者はプログラマーに対して更に熟知することができなくて、つまりダニエル・リッチ、C言語とUNIXの父
二人は協力して「The C Programming Language」の第1版を発行した.この本の最も意義のある部分は末尾の参考ガイドにある.
この参考ガイドを軽視しないでください.それは当時のC言語の完全な定義を提供して、これはC言語が現れた後の最初のC標準とされて、K&R Cと呼ばれています.
その後、C言語は第一春を迎え、多くの機種を走り、Cプログラムソフトも一世を風靡し、広くサポートされた.
次第に、Cの広範な応用と各種の人々の新しい特性が各種のコンパイラの中で書かれたため、Cの良好な移植性を保証することを考慮して、業界内は1部の新しいもっと全面的なC標準を渇望します
そこで、1983年、ANSI(アメリカ国家標準協会)は部門を組織してC言語の新しい標準を研究し始め、この標準は1989年にANSIによって通過され、C 89あるいはANSI Cと呼ばれた.
これで、C言語は国家級の標準があって、国境はC言語が海を渡って発展することを阻止するトラではありませんて、C言語の更に広範な応用は国際標準の制定を欠くことができません
ANSI C通過後、『The C Programming Language』の第2版もC 89によって編纂・発行が開始され、C 89は技術的にK&R Cよりかなり完備している
翌年、1990年、ISO(国際標準化機構)の努力のもと、ANSI Cを通過して国際標準となり、すなわちANSI CがISO Cとなった
両者は標準文書で微妙な違いがありますが、技術的には変わりませんので、ISO/ANSICは技術的には同じです
それからISOはやはりISO Cのドキュメントに対していくつかの授业を続けて、多くの文字の上の细かい问题を改善して、少しのドキュメントを拡充しました(结局标准として、ドキュメントは真剣に工夫します)
1995年には拡張後のISO C規格も発表され、史称C 95
現在最も重要な基準制定は1999年に発生し、ISO/ANSIは時代の変化に基づいて技術にいくつかのものを加えた.Boolなどいくつかのキーワードの追加、いくつかの技術上の変更は、ユーザーに技術面でより良い利便性を提供し、これが現在も遵守されているC 99基準であり、2018年までで最も権威と最新のC基準である.
_Bool、_Complex、_ImaginaryはC 99に追加された3つの基本データ型です
 
——参考『C Primer Plus第五版』