今天我正在开发一个示例 iOS 应用程序,其中有如下代码:
unsigned int uCount = 0;
int iJoke = -7;
uCount = uCount + iJoke;
但是当我像这样打印它时:
╔══════════════════╦══════════════════════╦════════════╗
║ Format Specifier ║ Print Statement ║ Output ║
╠══════════════════╬══════════════════════╬════════════╣
║ %d ║ NSLog(@"%d",uCount); ║ -7 ║
║ %u ║ NSLog(@"%u",uCount); ║ 4294967289 ║
║ %x ║ NSLog(@"%x",uCount); ║ fffffff9 ║
╚══════════════════╩══════════════════════╩════════════╝
我预计 %u 的输出为 7。
然后我像这样使用:
unsigned int i = 0;
int j = -7;
i = i + abs(j);
输出如下:
╔══════════════════╦══════════════════════╦════════╗
║ Format Specifier ║ Print Statement ║ Output ║
╠══════════════════╬══════════════════════╬════════╣
║ %d ║ NSLog(@"%d",uCount); ║ 7 ║
║ %u ║ NSLog(@"%u",uCount); ║ 7 ║
║ %x ║ NSLog(@"%x",uCount); ║ 7 ║
╚══════════════════╩══════════════════════╩════════╝
虽然我的问题已解决abs()
,但我很想知道为什么 %u4294967289
在我的第一个案例中给出了结果。
请帮助,在此先感谢。