C++ boolean

なんか,ちょくちょく紛らわしいのでメモ.

trueは非ゼロ.
flaseはゼロ.

if(!p){
  cout << "メモリ割り当てエラー" << endl;
  exit(1);
}

っていう書き方がなかなか慣れない.
から,

if(p!=NULL){
  cout << "メモリ割り当てエラー" << endl;
  exit(1);
}

こんな会話があった..

おれ: true が0?
id:Silent-Bob : false == 0
おれ: trueが0以外か
おれ: ok
おれ: 紛らわしいよな
id:Silent-Bob : 0以外かどうか自身ない
おれ: いや確か非ゼロだったはず
id:Silent-Bob : k
id:Silent-Bob : コンストラクタにある
id:Silent-Bob : if(!str){...}さ
おれ: unn
id:Silent-Bob : どういう動作するん?
おれ: 1じゃなかったら
おれ: ってことだから
おれ: 0だったら
おれ: つまり,メモリが確保できなくて
おれ: NULLだったら
おれ: ってこと.
id:Silent-Bob : == NULLって書くね俺は!

おれも.