使用开关盒的麻烦

问题描述 投票:-5回答:1

我有以下代码段:

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;
                 }

输出:错误!

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

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

ios objective-c switch-statement
1个回答
0
投票

问题出在kCmdWarningSSLException值是整数:-100

发生切换时,它尝试查找值:4294967196(在将整数-100存储在无符号整数中时发生),原因是NSUInteger无法存储-ve值,并且它是无符号整数。

要将此更改从NSUInteger cmdWarning更改为NSInteger cmdWarning =,并切换到适当的大小写并输出“错误!”]

© www.soinside.com 2019 - 2024. All rights reserved.