xcode编译的一个诡异bug

今天开发的一个bug搞了好久也没看懂,最后觉得应该是编译器的问题
定义了一个变量

const static unsigned long long overSize = 1024 * 1024 * 1024 *4;
NSLog(@"%llu", overSize);

你猜输出是多少,本来打算是定一个一个4G的数字,结果出来是0,我想不通了,64位啊,无符号啊,2的64次方减1啊,怎么4G都表示不了

然后换一种写法

unsigned long long overSize = 1024 * 1024 * 1024;
unsigned long long overSize4 = overSize * 4;
NSLog(@"%llu", overSize4);

这样就能正常输出大小了,这个东西应该是编译器的bug吧

Leave a Reply

Your email address will not be published.