我有一个操作,其内容如下:
NSInteger articleIndex = self.featuredArticlesCounter % self.featuredArticles.count;
在这种情况下,self.featuredArticlesCounter是-1,
self.featuredArticles.count是10。
所以基本上是-1 % 10,应该是9,但结果却是5。 Google说是9。
如果我执行
NSInteger articleIndex = -1 % 10;
,它会给我-1。我尝试将count的NSUInteger转换为NSInteger,但不起作用。 我试图在各个地方插入括号,但也没用。
自那时起,我已经切换到使用
((-1 % 10) + 10) % 10
。但我仍然想知道这里的问题是什么。 有什么想法吗?
编辑:
featuredArticlesCounter是有符号整数
self.featuredArticles.count是无符号整数
unsigned short x = -1; printf("%d\n", x % 10);
输出结果为5。这可能是问题中的一个笔误,但在得出结论之前应该确定实际错误,而不是猜测,以免重复。 - Eric Postpischil