-6

我有以下代码片段:

NSUInteger cmdWarning = [(NSNumber*)responseObject[kCmdResponseWarning] unsignedIntegerValue];
//this time cmdWarning has value 4294967196

   switch (cmdWarning) {
       //I defined #define kCmdWarningSSLException          -100                   
       case kCmdWarningSSLException:
             NSLog(@"error!");
                  break;
                  default: 
                  break;
                 }

输出:错误!

我的预期结果是:记录“错误!” 未打印

为什么会这样?我该如何解决这个问题?我感谢您的支持。提前致谢。

4

1 回答 1

0

问题在于kCmdWarningSSLException整数值:-100

当 switch 发生时,它会尝试查找值:4294967196(当整数 -100 存储在无符号整数中时发生)相同的原因是NSUInteger无法存储 -ve 值并且它是无符号整数。

修复此更改NSUInteger cmdWarningNSInteger cmdWarning =切换将找到正确的大小写并输出“错误!”

于 2013-11-07T04:56:21.327 回答