NSUInteger vs NSInteger,int vs unsigned和类似的情况

NSUInteger vs NSInteger,int vs unsigned和类似的情况,第1张

概述任何人都有专业知识解释什么时候使用NSUInteger和什么时候使用NSInteger? 我看过Cocoa方法返回NSInteger,即使在返回的值总是无符号的情况下。 什么是根本原因?是NSInteger还是int严格限于如果我们要表示负值? 从NSObjCRuntime.h: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) | 任何人都有专业知识解释什么时候使用NSUInteger和什么时候使用NSInteger?

我看过Cocoa方法返回NSInteger,即使在返回的值总是无符号的情况下。

什么是根本原因?是NSInteger还是int严格限于如果我们要表示负值?

从NSObjCRuntime.h:

#if __LP64__ || (TARGET_OS_EMbedDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_liKE_64typedef long NSInteger;typedef unsigned long NSUInteger;#elsetypedef int NSInteger;typedef unsigned int NSUInteger;#endif
解决方法 在处理NSUInteger和NSInteger时,你还应该注意整数转换规则:

以下片段返回0(false),虽然你希望它打印1(true):

NSInteger si = -1;NSUInteger ui = 1;printf("%d\n",si < ui);

原因是[si]变量被隐式转换为unsigned int!

参见CERT’s Secure Coding site关于这些“问题”的深入讨论以及如何解决它们。

总结

以上是内存溢出为你收集整理的NSUInteger vs NSInteger,int vs unsigned和类似的情况全部内容,希望文章能够帮你解决NSUInteger vs NSInteger,int vs unsigned和类似的情况所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1042558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存