for循环运行long long int,但不运行unsigned long long int

时间:2019-06-14 16:34:14

标签: c++

我正在运行以下for循环

for(unsigned long long int i = N-1; i >= 0; i--){
    cin>>L[i];
}

当程序到达此代码段时,它将停止响应。 但是当我删除unsigned时,就像这样

for(long long int i = N-1; i >= 0; i--){
    cin>>L[i];
}

它工作正常。为什么会这样?

1 个答案:

答案 0 :(得分:5)

i >= 0为无符号时,i始终为true,因此您的循环条件始终得到满足。

i--为0时,i导致std::numeric_limits<unsigned long long>::max()等于module.exports = async ({ req, utils }) => { return { statusCode: 200, headers: { foo: "bar" }, body: "hello" }; }); ,这随系统而异,但典型值为9223372036854775807。循环计数器将然后从那里开始倒数。