有人可以帮助我了解以下C ++代码的输出:
#include <iostream>
#include <vector>
using namespace std;
class Cls{
public:
static int getIndex(const std::vector<int> &nums, int index) {
int res = (index + nums[index]) % nums.size();
std::cout << "\n ( " << index << " + " << nums[index] << " ) % " << nums.size()<<" = " << res <<"\n";
return res;
}
};
int main() {
vector<int> nums = {-1,-1,-1};
std::cout << (0 + -1) % 3;
std::cout << "\n" << Cls::getIndex(nums, 0);
return 0;
}
我得到的输出:
-1
( 0 + -1 ) % 3 = 0
0
该代码如何输出“ -1”,对于第二个std :: cout,它如何输出:
std::cout << (0 + -1) % 3;
,否则,为什么它是相同时输出-1首次输出-1 pirst sective?C ++中的签名与未签名的算术
( 0 + -1 ) % 3 = 0
-1
是一个符号的整数文字,因此3
直接评估-1 % 3
.。 (
-1
)是因为
0
nums.size()
在未签名的算术中进行评估。