输出输出[重复]

问题描述 投票:0回答:1

有人可以帮助我了解以下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 ++中的签名与未签名的算术
c++ output
1个回答
0
投票

( 0 + -1 ) % 3 = 0

    是因为
  1. -1是一个符号的整数文字,因此
    3
    直接评估
    -1 % 3
    .
    -1
    是因为
    0
  2. 返回一个nunsigned
  3. ,从而导致
    nums.size()
    在未签名的算术中进行评估。
    	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.