在这段代码中,%做了多少?

时间:2016-02-02 20:44:01

标签: ios objective-c modulo

我遇到了一行令我困惑的代码:

return [cellSize[indexPath.item % 2] CGSizeValue];

更具体地说:[indexPath.item % 2]

我在Xcode中发现%的唯一内容主要涉及%@, %f, etc...并在字符串中转义%。我也知道三元,但那不是这个,是吗? 有人可以解释一下这行是做什么的吗?

如果需要,可以提供更多背景信息:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    CQTaskPhotosCVCell *cell = (CQTaskPhotosCVCell *)[collectionView cellForItemAtIndexPath:indexPath];
    return [cellSize[indexPath.item % 2] CGSizeValue];
}

4 个答案:

答案 0 :(得分:4)

  

return [cellSize [indexPath.item%2] CGSizeValue];

%modulo operator(除法后的余数)。

选择% 2是选择偶数行与奇数行的常用方法,例如替代着色。在您的情况下,它似乎是从两个不同的单元格大小中选择(基于变量cellSize的名称)。

答案 1 :(得分:2)

对于偶数编号indexPath.items,代码使用cellSize[0]来确定indexPath处项目的大小。对于奇数编号indexPath.items,代码使用cellSize[1]

%是模运算符(在整数除法后提供余数)。除以2时,余数将始终为0或1。

答案 2 :(得分:1)

它是模数:https://en.wikipedia.org/wiki/Modulo_operation

在计算中,模运算在一个数除以另一个

之后找到余数

答案 3 :(得分:0)

它是模运算符并计算除法运算的余数。

  

/运算符的结果是第一个操作数除以第二个操作数的商; %运算符的结果是余数。

ISO / IEC 9899:TC3,6.5.5:5