• ベストアンサー

BOOLに変わるもの

コンパイラーによってBOOLは古い?とエラーになります。TRUEかFALSEの1ビットしかいらないのに、INTやCHARを使うのでしょうか?BOOLに変わる新しい?宣言ってあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

C++なら bool # boolリテラルとして true, false も用意されています。

junsana
質問者

お礼

ありがとうございます Cです。ためしに使ってみましたがやはりエラーとなりました

その他の回答 (2)

回答No.3

> CのBOOLはintをtypedefされたものです。 違います。(Windowsでは)windef.hの中で(intに)typedefされているのであって、BOOLが何であるかを言語仕様で決めてあるのではありません。

junsana
質問者

お礼

ありがとうございました ITRONで使用してます 前任者が作ったものなので、みつかりづらかったですが、 typedef char BOOL; みつけました このヘッダーファイルをインクルードするのを忘れていたみたいです

  • SHA-320
  • ベストアンサー率0% (0/4)
回答No.2

CのBOOLはintをtypedefされたものです。 TRUEとFALSEも同様に#defineされています。

junsana
質問者

お礼

ありがとうございました Defineされてました

関連するQ&A

  • BOOLの初期値は?

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <質問> BOOL bl; と宣言した後、必ず bl = FALSE; と初期値を入れているのですが、元々FALSEかTRUEのどちらか、 決まった初期値が入っているのでしょうか?

  • bool

    素数を求めるプログラムを作りました。 素数か、そうでないかを1か0で区別していたのですが、 よりメモリを効率よく使いたいため、booleanを使ったらどうだという案をいただきやってみたのですが、エラーが出てしまいました。 このプログラムの何がいけないのですか? #include<stdio.h> #include<stdbool.h> #define n 250000 main(){ int i,p,k,w,np,s; bool pn[n]; np=0; for(i=0;i<n;i++){ pn[i]=false; } for(i=0;i<=n;i++){ if(pn[i]==false){ p=3*i+5-(i%2); w=2*p; for(k=i+w;k<=n;k+=w){ pn[k]=true; } s=5*i+7-2*(i%2); for(k=s;k<n;k+=w){ pn[k]=true; } np++; } } printf("%10d",np+2); }

  • 関数を作成したい

    PgSQLで関数を作成したいのですが、記述方法がわかりません。 結果がbool trueならint 1 結果がbool falseならint 0 を返すようなものを作りたいのですが、どのように記述すれば良いのでしょうか。 CREATE FUNCTION BOOL2INT(boolean) RETURNS integer このあとの記述が複雑でわかりません

  • bool と BOOL の違い(構造体)

    C++プログラマーとしてはとっても恥ずかしいタイトルですが。。。 Borland C++ Builder 9でアプリ開発してます。 訳あって、既存のアプリ(BCB6)を改造して別のアプリを作る業務を引き継いだのですが、修正する度に可笑しな動作をするのでソースを調べてみたら。。。 『boolとBOOLが混在してる(・・;)』 「ダメダメアプリ」に頭を抱えている今日この頃です。 前置きはさておき、質問ですが、 この「ダメダメアプリ」の中に2種類の構造体 typedef struct _TEST_A{ bool flag; char ch[45]; }TEST_A; と typedef struct _TEST_B{ BOOL flag; char ch[45]; }TEST_B; があるのですが、それぞれsizeof()でサイズを計算すると、 sizeof(TEST_A) = 46 sizeof(TEST_B) = 52 という結果になりました。 BOOLは4バイトなので49バイトかと思ったのですが、 TEST_Bが52になる理由がわかりません。 どなたかわかる方いらっしゃったら教えてください。

  • Bool型のTrue、Falseの書き方

    Mail Ditributorという同報メールを使っています。 http://www.woodensoldier.info/soft/md.htm 「アドレス帳の編集→ルールの作成→ルールの追加」と進んだ画面に「Bool型はTrueかFalseと入力してください。」とありますが、この意味が分かりません。 例えば、次の(1)、(2)の場合は、どのように書けばいいのでしょうか。 (1)「e-mail」の欄が「123@456.ne.jp」である人以外に送信する場合。 (2)「e-mail」の欄が「123@456.ne.jp」である人だけに送信する場合。

  • 文字列クラスを作りたいと思っています

    文字列クラスを作りたいと思っています。 以下のようなところまでは作れましたが、 エラーがでてしまいます。 どこかおかしいところがあるのでしょうか? *********************************************** #include<stdio.h> #include<string.h> class stt { public: char *str; int len; bool maked; stt::stt() { len=0; str=NULL; maked=false; } stt::~stt() { delete[] str; } stt &operator =(char *c) { if(maked) { delete[] str; maked=false; } len=strlen(c); str=new char[len]; strcpy(str,c); maked=true; return (*this); } virtual operator char*() { return str; } }; int main() { stt s; s="Hello World"; printf(s); getchar(); return 0; } ***********************************************

  • C++でboolにintの値を代入することについて

    VC9.0を使っているのですが、以下のような文を書くと 警告が出てしまいます。 int i = 100; //warning C4305: '初期化中' : 'int' から 'bool' へ切り詰めます。 bool a = i; この警告を出力させないために以下のようにすることに 問題はないでしょうか? int i = 100; bool a = static_cast<bool>(i); このキャストを行うとき、iの値が0ならaはfalse, iの値が0以外ならaはtrueとなることは保証されるのでしょうか? よろしくお願いいたします。

  • VC++でboolがエラーになる

    Borland C++ Builderで開発したプログラムを、訳あってVC++(2003)に乗せ変えてビルドしようとしたのですが、boolを使っているところでコンパイルエラーになります。 正確には error C2061: 構文エラー : 識別子'bool' となります。 このエラーの解決法をご存知の方がいらっしゃいましたら、ご教示お願いいたします。

  • 通信(送信)のプログラム

    bool WriteData(char *buff, unsigned int data_size) {     DWORD dwWritten; /* ポートへ書き込んだバイト数 */ WriteFile(hComm, buff, data_size, &dwWritten, NULL); if (dwWritten!=data_size) { printf("データの送信に失敗しました。\n"); return false; } return true; } 上の関数はシリアル通信の送信する関数なんですが、これに数値などを入れたいんですが、char型のため、一文字しか入れれません。たとえば、01ならchar型の0とchar型の1を別々に送らないとだめなんですが、このようにするしか無理なんでしょうか?int型の数値を好きなように入れて送りたいんですが。あと、OxFFのように16進数も入れれると便利なんですが。駄文ですいません。プログラムの知識が浅はかですいません。

  • c++について

    入力した値が123または456で一致したら一致と表示したいのですがどうfor文を回すか分かりません。 ご助力願います_(._.)_ class N { bool hit(const char* a[],const char* b) {   for(int i=0;i<*a[i];i++) if(*a[i]!=b[i]) { return false; } return true ; } public: N() { const char* a[ ]={ "123","456"}; char b[4]; int num; cin>>num; sprintf_s(b, 4, "%03d", num); if(hit(a,b)) cout<<"一致"; else cout<<"不一致"; } };

専門家に質問してみよう