-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

スイッチが発生すると、値を見つけようとします: 4294967196 (整数 -100 が符号なし整数に格納されている場合に発生) 同じ理由は、NSUInteger-ve 値を格納できず、符号なし整数です。

この変更を修正するNSUInteger cmdWarningNSInteger cmdWarning =、スイッチは適切なケースを見つけて「エラー!」を出力します。

于 2013-11-07T04:56:21.327 に答える