gpt4 book ai didi

c - NSUInteger 与 NSInteger、int 与 unsigned 以及类似情况

转载 作者:太空狗 更新时间:2023-10-30 03:09:47 25 4
gpt4 key购买 nike

谁有专业知识来解释何时使用 NSUInteger 以及何时使用 NSInteger?

我曾见过 Cocoa 方法返回 NSInteger,即使在返回值总是无符号的情况下也是如此。

根本原因是什么?如果我们要表示负值,是否严格限制 NSInteger 或 int?

来自 NSObjCRuntime.h:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

最佳答案

在处理 NSUInteger 与 NSInteger 时,您还应该了解整数转换规则:

例如,以下片段返回 0(假),尽管您希望它打印 1(真):

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

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

参见 CERT's Secure Coding site围绕这些“问题”以及如何解决这些问题进行深入讨论。

关于c - NSUInteger 与 NSInteger、int 与 unsigned 以及类似情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com