iOS 中 MAX(A,B) 遇到 NSUInteger 的坑

一次開發(fā)過程中竟遇到用 MAX函數(shù)比較 0 和 -1 時返回的是較小的值 -1
簡直逆天了。

使用場景大概如下:

 NSArray *array = [NSArray array];
 NSInteger result = MAX(array.count - 1,0);

結果 result 竟然是 -1

經分析發(fā)現(xiàn) NSArray 的 count 屬性是 NSUInteger 類型,而對 NSUInteger 類型的變量賦值 -1 會導致溢出實際值則是一個很大的正數(shù)。因此 MAX 函數(shù)把較大的數(shù)值 NSUInteger 型的 -1 返回出來了。

所以在我們使用 MAX 函數(shù)取較大數(shù)值時一定注意參數(shù)類型是否為 NSUInteger 如果有必須轉為有符號類型。如

NSInteger result = MAX((NSInteger)(array.count - 1),0);

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容