bool型
概要
$1$ bitで true と false のみ入れられる型。
if分岐などの条件に長々と書きたくないときに、bool 型変数に一度書き込んだりする。
あるいは、大量の条件を処理する場合に事前に bool 型変数を用意して処理することもある。
宣言と初期化
宣言だけする場合
bool a;
初期化もする場合
bool a = true;
可能な演算
代入 =
a=b; で、変数 a の中身を b に書き換える。
数学とは違い、左右を逆にして b=a; と書くと意味が変わるので注意。
かつ &&
a&&b で、a と b が両方 true なら true、片方でも false なら false、という演算になる。
bool 型変数でなくても bool 型を返す判定に対しても使える。
例えば、以下で「x は $1$ 以上かつ $10$ 以下」という条件を表せることになる。
1<=x&&x<=10
または ||
a||b で、a と b が片方でも true なら true、両方 false なら false、という演算になる。
bool 型変数でなくても bool 型を返す判定に対しても使える。
例えば、以下で「x と y のどちらか一方でも $0$」という条件を表せることになる。
x==0||y==0
反転 !
!a で、a が true なら false、a が false なら true、という演算になる。
ビット演算系
一応ビット演算は可能だが、あまり使うことはないかも……。
よく使う処理
if分岐のときに大量の条件をループで扱う処理
全部 true なら実行したい/$1$ つでも false なら実行したい
全部 true なら実行するコード。
bool flag = true;
for (int i=0; i<n; i++) {
if (!i個めの判定) flag = false; // 条件は否定形なので注意
}
if (flag) 実行したい処理
最後の行を
if (!flag) 実行したい処理
に変更すれば、$1$ つでも false で実行。
$1$ つでも true なら実行したい/全部 false なら実行したい
$1$ つでも true なら実行。
bool flag = false;
for (int i=0; i<n; i++) {
if (i個めの判定) flag = true;
}
if (flag) 実行したい処理
最後の行を
if (!flag) 実行したい処理
に変更すれば、全部 false で実行。
注意点
「かつ」と「または」の優先順位
a||b&&c と書いた場合、&& の方が優先順位が高いので、a||(b&&c) と解釈される。
……が、ややこしいので、括弧をつけて書くように心がけたい。
関連アルゴリズム
if分岐
条件が true か false かによって、処理を分岐させる。