http://sumishiro.blogspot.com/2009/08/boolfloat.html
以前こんなことを書いたが考えてみれば、bool -> int -> floatで変換されたと思えばどうということはないな。クラスでこんな一足飛びな型変換ができちゃうのかなと少し試してみたが、再現できなかった。一足飛びな型変換は出来ないのかもしれない。
また
C++言語仕様では、boolはintに変換でき、false→0/true→1 となっています。
--- ISO/IEC FDIS 14882:1998(E) ---
4.5 - Integral promotions [conv.prom]
...
-4- An rvalue of type bool can be converted to an rvalue of type int,
with false becoming zero and true becoming one.
true/falseは、1/0と保障されている?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200504/05040024.txtより引用。
とあり、trueはc++では1らしい。
#include <cstdio>
#include <cstring>
int main()
{
bool b;
std::memset( &b, 2, sizeof(b) );
if ( b == true ) std::printf("b == true\n");
if ( b == 2 ) std::printf("b == 2\n");
return 0;
}
output:
b == true
b == 2
0 件のコメント:
コメントを投稿