データ型の範囲
int main() { using ullint=unsigned long long int; using ulint=unsigned long int; std::cout<<ullint(ULLONG_MAX)<<std::endl; std::cout<<ulint(ULLONG_MAX)<<std::endl; }
ulintはオーバーフローを起こすはずである。…と思われるセマンティックスだが
ideone:Ideone.com - LguZAm - Online C++0x Compiler & Debugging Tool
Wandbox:[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
当然の事なのだが32bitと64bitの環境によって、このように動作が異なる。
Code iqで10億を越える値を扱う問題を解いていて、異なる動作をしたのが経緯であるが、環境に依存する移植性のないコードを無意識に書かないようにしなければなと思った。