Cpp bool型 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ページの作成:「<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-tex...」)
 
 
1行: 1行:
 +
[[C PlusPlus#C++からの技術|C++]]に戻る
 +
 +
 
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner">
 
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner">
 
<tr>
 
<tr>
 
<td style="width:1px;"></td>
 
<td style="width:1px;"></td>
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ bool型</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
+
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) bool型</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
8行: 11行:
 
<br />
 
<br />
 
== '''bool型''' ==
 
== '''bool型''' ==
 +
 +
bool型は真or偽のどちらかを持つための変数です。VisualStudioでは、1バイトの大きさの変数で、true = 1 false = 0 とした1バイトの整数型と考えることができます。bool型が1バイトであることは保証されていません。bool型に0以外の数値を代入演算子で代入した場合に1になるという特徴がある型となります。したがってint型と同様の数値変数として扱うことはできません。bool型変数に対してインクリメント演算子を使うことができますが、デクリメント演算子を使うことができないようになっています。0を保持している、bool型変数に対してインクリメント演算子を使うと1になり偽falseから真trueに変化しますが、デクリメント演算子で戻すことはできません。インクリメント演算子で偽なら真に変え、真なら真のままにするという特殊な操作が可能となりますので、特殊な使い方をするプログラマもいるかもしれません。わかりにくい操作ですので、できれば、bool型変数に対するインクリメントは避けた方が良いと思います。
 +
 +
真や偽、trueやfalseあるいは1や0のどちらをとる値と言われてもピンと来ない人は、ブール代数を学習した方が良いと思います。プログラミングにおいてブール代数の理解は有用です。if文の条件の考え方や、入力のパターンに対する出力の組み合わせを単純化した式の作成ができるようになります。
 +
 +
サンプル
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#pragma once
 +
#include <iostream>    //cpp cout etc 一般入出力関数
 +
 +
int _tmain(int argc, _TCHAR* argv[])
 +
{
 +
  bool bFlagA;
 +
  bool bFlagB;
 +
  bFlagA = true;
 +
  bFlagB = false;
 +
 +
  printf("bFlagA(true)->%d bFlagB(false)->%d size(bool)->%d\n",bFlagA,bFlagB,sizeof(bool));
 +
  printf("(true)->%d (false)->%d size(bool)->%d\n",true,false,sizeof(bool));
 +
 +
  if(bFlagA == -1){
 +
    printf("if(bFlagA == -1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == -1)->false\n");
 +
  }
 +
  if(bFlagA == 0){
 +
    printf("if(bFlagA == 0)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 0)->false\n");
 +
  }
 +
  if(bFlagA == 1){
 +
    printf("if(bFlagA == 1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 1)->false\n");
 +
  }
 +
  if(bFlagA == 2){
 +
    printf("if(bFlagA == 2)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 2)->false\n");
 +
  }
 +
 +
 +
  if(bFlagB == -1){
 +
    printf("if(bFlagB == -1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == -1)->false\n");
 +
  }
 +
  if(bFlagB == 0){
 +
    printf("if(bFlagB == 0)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 0)->false\n");
 +
  }
 +
  if(bFlagB == 1){
 +
    printf("if(bFlagB == 1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 1)->false\n");
 +
  }
 +
  if(bFlagB == 2){
 +
    printf("if(bFlagB == 2)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 2)->false\n");
 +
  }
 +
 +
  if(-1){
 +
    printf("if(-1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(-1)->false\n");
 +
  }
 +
  if(0){
 +
    printf("if(0)->true\n");
 +
  }
 +
  else{
 +
    printf("if(0)->false\n");
 +
  }
 +
  if(1){
 +
    printf("if(1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(1)->false\n");
 +
  }
 +
  if(2){
 +
    printf("if(2)->true\n");
 +
  }
 +
  else{
 +
    printf("if(2)->false\n");
 +
  }
 +
 +
 +
  bFlagA++;
 +
  bFlagB++;
 +
 +
  printf("bFlagA(true++)->%d bFlagB(false++)->%d size(bool)->%d\n",bFlagA,bFlagB,sizeof(bool));
 +
 +
  bFlagA = -1;
 +
  bFlagB = 2;
 +
 +
  printf("bFlagA(-1)->%d bFlagB(2)->%d size(bool)->%d\n",bFlagA,bFlagB,sizeof(bool));
 +
 +
  bFlagA = 1;
 +
  bFlagB = 0;
 +
 +
  printf("bFlagA(1)->%d bFlagB(0)->%d size(bool)->%d\n",bFlagA,bFlagB,sizeof(bool));
 +
 +
  if(bFlagA == -1){
 +
    printf("if(bFlagA == -1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == -1)->false\n");
 +
  }
 +
  if(bFlagA == 0){
 +
    printf("if(bFlagA == 0)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 0)->false\n");
 +
  }
 +
  if(bFlagA == 1){
 +
    printf("if(bFlagA == 1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 1)->false\n");
 +
  }
 +
  if(bFlagA == 2){
 +
    printf("if(bFlagA == 2)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagA == 2)->false\n");
 +
  }
 +
 +
 +
  if(bFlagB == -1){
 +
    printf("if(bFlagB == -1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == -1)->false\n");
 +
  }
 +
  if(bFlagB == 0){
 +
    printf("if(bFlagB == 0)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 0)->false\n");
 +
  }
 +
  if(bFlagB == 1){
 +
    printf("if(bFlagB == 1)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 1)->false\n");
 +
  }
 +
  if(bFlagB == 2){
 +
    printf("if(bFlagB == 2)->true\n");
 +
  }
 +
  else{
 +
    printf("if(bFlagB == 2)->false\n");
 +
  }
 +
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
出力
 +
<syntaxhighlight lang="text">
 +
bFlagA(true)->1 bFlagB(false)->0 size(bool)->1
 +
(true)->1 (false)->0 size(bool)->1
 +
if(bFlagA == -1)->false
 +
if(bFlagA == 0)->false
 +
if(bFlagA == 1)->true
 +
if(bFlagA == 2)->false
 +
if(bFlagB == -1)->false
 +
if(bFlagB == 0)->true
 +
if(bFlagB == 1)->false
 +
if(bFlagB == 2)->false
 +
if(-1)->true
 +
if(0)->false
 +
if(1)->true
 +
if(2)->true
 +
bFlagA(true++)->1 bFlagB(false++)->1 size(bool)->1
 +
bFlagA(-1)->1 bFlagB(2)->1 size(bool)->1
 +
bFlagA(1)->1 bFlagB(0)->0 size(bool)->1
 +
if(bFlagA == -1)->false
 +
if(bFlagA == 0)->false
 +
if(bFlagA == 1)->true
 +
if(bFlagA == 2)->false
 +
if(bFlagB == -1)->false
 +
if(bFlagB == 0)->true
 +
if(bFlagB == 1)->false
 +
if(bFlagB == 2)->false
 +
</syntaxhighlight>
 +
 +
 +
[[C PlusPlus#C++からの技術|C++]]に戻る

2021年2月6日 (土) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス