我拿一个整数,在这个例子中是192,然后左移了24个空格。看起来,领先的1导致它变成负面的。“unsigned int”打印为负数?
unsigned int i = 192;
unsigned int newnumber = i << 24;
NSLog(@"newnumber is %d",newnumber);
我期待3221225472但我得到-1,073,741,824(逗号增加了清晰度)
一个无符号整数不应该消极权利?
我拿一个整数,在这个例子中是192,然后左移了24个空格。看起来,领先的1导致它变成负面的。“unsigned int”打印为负数?
unsigned int i = 192;
unsigned int newnumber = i << 24;
NSLog(@"newnumber is %d",newnumber);
我期待3221225472但我得到-1,073,741,824(逗号增加了清晰度)
一个无符号整数不应该消极权利?
因为你重新解释它在NSLog
作为一个有符号的整数。您应该使用%u
来查看无符号值。
无法通过可变数量的参数来确定您传递的值的类型。这就是为什么NSLog
依赖格式字符串来了解您传递了多少个参数以及它们的类型。如果您传递的类型与相应的格式说明符不匹配,则NSLog
将信任该说明符并根据它解释您的数据。现代编译器甚至可能会警告你。
你婉做NSLog(@"newnumber is %u",newnumber);
%d
转换回一个签名的int类型。
%d
表示“有符号整数”;对于“无符号整数”使用%u
。
啊哈。非常有意义。我以为我失去了理智。谢谢! – Mike 2012-04-22 23:35:06