int main(int argc, char**argv){出力:
#define LOG(X) std::cout << #X << ":" << X << ", " << typeid(X).name() << std::endl
LOG(-1U);
LOG(int(-1U));
LOG(float(-1U));
std::vectorvi(1);
float a = -vi.size();
LOG(a); // -1 expected !!!
}
-1U:4294967295, jfloat a = -vi.size(); なんてコードを、なんの疑いもなく書いてしまった。しかも、-1 になることを期待して。僕の頭の中では int operator - (unsigned int); だと思っていた。
int(-1U):-1, i
float(-1U):4.29497e+09, f
a:4.29497e+09, f
int a = -vi.size(); は -1 になる。きっと、こういうコードが結果的に期待する結果になるせいで単項-演算子の型を勘違いして覚えてしまったのだろう、、、。
そんな訳で、4.29497e+09 は覚えておいて損はない値。(かもしれない)
0 件のコメント:
コメントを投稿