这段代码中的 % 是做什么的?

What is the % doing in this snippet of code?

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

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];
}

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

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

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

取模:https://en.wikipedia.org/wiki/Modulo_operation

在计算中,模运算求一个数除以另一个数后的余数

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

The result of the / operator is the quotient from the division of the first operand by the second; the result of the % operator is the remainder.

ISO/IEC 9899:TC3, 6.5.5:5

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

% 是模运算符(提供整数除法后的余数)。除以2,余数总是0或1。