環境:XCode4, Intel Core Duo (64bit)
定数1は32bit定数として扱われているため、
ビット演算なども32bitとして演算される。つまり、
UInt64 bitShiftValue = 1<<32 br="">
のように32bitを越える演算を行うと警告が出て、値はオーバーフローする。
32bit以上64bit以下でビット演算を行う場合、ULL(unsigned long long)を使用する。
現在のところMacでは1ULL (unsigned long long)が32bit/64bit環境共に64bit整数として保障されているらしいので、例えば
UInt64 bitShiftValue = 1ULL<<32 br="">
などとする。1ULでは環境依存になるのでよろしくない。
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html32>32>
0 件のコメント:
コメントを投稿