模数行为 -1 % 3 (C++)

Modulus Behavior -1 % 3 (C++)

if (currIndex < 0) {

            cout << currIndex << " % " << array.size() << endl;

            currIndex = currIndex % array.size();

            cout << currIndex << endl;
}

输出:

-1 % 3
0

-1 % 3 = C++ 中的 -1 为什么返回 0?

完整片段: https://ideone.com/leWqhi

size() returns 无符号整数类型,因此此计算是通过将 -1 转换为无符号并执行无符号模来完成的。

将 size() 转换为有符号整数类型以获得正确的结果。