wzyc @ 2024-09-18 18:42:13
下方代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector <int> v;
cout<<v.size()-1;
}
由于v.size()应该=0,那么代码应该输出-1 可实际上输出18446744073709551615
by Besheep @ 2024-09-18 18:43:02
这是动态数组啊
by wzyc @ 2024-09-18 18:43:38
我不知道发哪
就发总版上了
by littlep001 @ 2024-09-18 18:44:24
在你的代码中,v.size() 返回的是 0,因此 v.size() - 1 计算结果是 -1。但是,size() 返回的是 size_t 类型,减去 1 会导致无符号整数下溢,从而输出一个很大的无符号整数(18446744073709551615)。要得到负数,可以将结果转换为 int 类型,如下所示:
cout << static_cast<int>(v.size()) - 1;
这样,代码就会正确输出 -1。
by littlep001 @ 2024-09-18 18:47:23
@wzyc
by wzyc @ 2024-09-18 18:49:12
@littlep001 啊。。。。对本蒟蒻来说有点难懂
by wzyc @ 2024-09-18 18:49:38
@littlep001 不过还是谢谢
by ikunTLE @ 2024-09-18 18:51:39
@wzyc 要输出 -1
改成这样:
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector <int> v;
cout<<int(v.size())-1;
}
by JeremyXie @ 2024-09-18 18:52:14
v.size()没有考虑他小于0的情况,所以用的是unsigned long long,但你需要有符号整数,所以要加强制类型转换(话说你应该发现这是MIN_unsigned long long而思考是否溢出的吧)