iso646.hとは、標準Cライブラリのヘッダーの一つである。演算子の代替つづりをマクロとして提供する。 代替つづり iso646.hをインクルードすることによって、以下に示すマクロを使用できるようになる。それぞれが演算子と対応している。ルネサンスのページより。 代替つづり演算子 and&& and_eq&= bitand& or|| or_eq|= bitor| xor^ xor_eq^= compl~ not! not_eq!=
iso646.hの利用例 iso646.hを利用する場面はほとんどなく、利用する場合の理由は、ISO646バリアント文字セットでCの記号が記述できなかったためである。IBMのciso646の記事より。 現在はUTF-8などに移行しているためこのヘッダーを利用する必要はない。
ここではあえてiso646.hを利用した記述の例を記述する。 条件分岐の演算 以下のソースコードはiso646.hを利用したand(どちらも成立していればtrue)のサンプルである。 #include <iso646.h> #include <stdio.h>
int main(void) { if(((2 + 3) == 5) and ((4 - 3) == 1))
puts("SUCCESS");
return 0; } 上記のソースコードは以下のソースコードと等価である。 #include <iso646.h> #include <stdio.h>
int main(void) { if(((2 + 3) == 5) && ((4 - 3) == 1))
puts("SUCCESS");
return 0; } ビットごとの演算子 以下はiso646.hを利用したor演算のサンプルである。 bitorとなっている部分をbitandに変えればand演算になる。 #include <iso646.h> #include <stdio.h>
int main(void) { if((1 bitor 2) == 3)
puts("SUCCESS");
return 0; } 上記のソースコードは以下のソースコードと等価である。 #include <iso646.h> #include <stdio.h>
int main(void) { if((1 | 2) == 3)
puts("SUCCESS");
return 0; }
代入演算子 以下のソースコードははiso646.hを利用したor演算のサンプルである。
or_eqとなっている部分をand_eqに変えればand演算になる。 また、or_eqをxor_eqに変えるとxor演算を行うソースコードになる。 #include <iso646.h> #include <stdio.h>
int main(void) { int x = 1; x or_eq 2; if(x == 3)
puts("SUCCESS");
return 0; } 上記のソースコードは以下のソースコードと等価である。 #include <iso646.h> #include <stdio.h>
int main(void) { int x = 1; x |= 2; if(x == 3)
puts("SUCCESS");
return 0; }
C++におけるiso646.h C++ではiso646.h(ciso646)は存在するもの、上記のマクロはすべて予約語となっているため、インクルードしても何も変わらない。 そのため、C++ではiso646.hを利用する必要は全くない。
C++では、ciso646は、std名前空間に属する。Microsoftより。
注釈
関連項目 C言語 ISO646 ヘッダー マクロ 標準Cライブラリ
外部リンク C言語関数辞典におけるiso646.hのページ ルネサスのiso646.hのページ cplusplus.comのciso646のページ Microsoftのciso646のページ