gpt4 book ai didi

c++ - CPP:对空 vector size()输出的算术运算,给出不确定的行为

转载 作者:行者123 更新时间:2023-12-01 15:07:49 24 4
gpt4 key购买 nike

我的密码

#include <stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> nums;
cout<<"size="<<nums.size()<<"\n";
cout <<"diff1 = "<<0-2<<"\n";
cout<<"diff2 = "<<nums.size()-2<<"\n";
return 0;
}
输出量
size=0
diff1 = -2
diff2 = 18446744073709551614
预期输出diff2 = -2
不知道如何生成此输出。
我还没有看到这种行为。

最佳答案

nums.size()返回无符号类型(实际上是size_t)。无符号类型的最小可能值为零,因此当您尝试生成负无符号值时会出现问题。标准所说的是值(value)环绕。因此,将值-1转换为无符号类型是无符号类型可以具有的最大值,类似地,值-2是无符号类型可以具有的第二大值。
那就是您在输出中看到的。

关于c++ - CPP:对空 vector size()输出的算术运算,给出不确定的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62788794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com