iso646.hとは、標準Cライブラリヘッダーの一つである。演算子の代替つづりをマクロとして提供する。

代替つづり編集

iso646.hをインクルードすることによって、以下に示すマクロを使用できるようになる。それぞれが演算子と対応している。[1]

代替つづり 演算子
and &&
and_eq &=
bitand &
or ||
or_eq |=
bitor |
xor ^
xor_eq ^=
compl ~
not !
not_eq !=

iso646.hの利用例編集

iso646.hを利用する場面はほとんどなく、利用する場合の理由は、ISO646バリアント文字セットでCの記号が記述できなかったためである。[2] 現在は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名前空間に属する。[3]

注釈編集

  1. ^ ルネサンスのページより。
  2. ^ IBMのciso646の記事より。
  3. ^ Microsoftより。

関連項目編集

外部リンク編集