Iso646.h

iso646.hとは、標準Cライブラリのヘッダーの一つである。演算子の代替つづりをマクロとして提供する。
代替つづり.
iso646.hをインクルードすることによって、以下に示すマクロを使用できるようになる。それぞれが演算子と対応している。
iso646.hの利用例.
iso646.hを利用する場面はほとんどなく、利用する場合の理由は、ISO646バリアント文字セットでCの記号が記述できなかったためである。
現在はUTF-8などに移行しているためこのヘッダーを利用する必要はない。
ここではあえてiso646.hを利用した記述の例を記述する。
条件分岐の演算.
以下のソースコードはiso646.hを利用したand（どちらも成立していればtrue）のサンプルである。
int main(void)
 if(((2 + 3) == 5) and ((4 - 3) == 1))
 puts("SUCCESS");
 return 0;
上記のソースコードは以下のソースコードと等価である。
int main(void)
 if(((2 + 3) == 5) && ((4 - 3) == 1))
 puts("SUCCESS");
 return 0;
ビットごとの演算子.
以下はiso646.hを利用したor演算のサンプルである。
bitorとなっている部分をbitandに変えればand演算になる。
int main(void)
 if((1 bitor 2) == 3)
 puts("SUCCESS");
 return 0;
上記のソースコードは以下のソースコードと等価である。
int main(void)
 if((1 | 2) == 3)
 puts("SUCCESS");
 return 0;
代入演算子.
以下のソースコードははiso646.hを利用したor演算のサンプルである。
or_eqとなっている部分をand_eqに変えればand演算になる。
また、or_eqをxor_eqに変えるとxor演算を行うソースコードになる。
int main(void)
 int x = 1;
 x or_eq 2;
 if(x == 3)
 puts("SUCCESS");
 return 0;
上記のソースコードは以下のソースコードと等価である。
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名前空間に属する。