## 关于整型数据减去vector对象长度size()时发生的溢出(暂且)现象

**

关于整型数据减去vector对象长度size()时发生的溢出现象

**
做pat时发现一个点老是超时,题目的时间复杂度也不高,感觉很奇怪。
将感觉不对劲的地方放到DEV里才知道了缘由。

发现:

如果一个整型数据减去一个大于自身的vector对象的长度
/如:a - vector.size() 注:a < vector.size()/
所得结果会变得超级大 这里直接上代码解释

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int>temp(10);
	int a=2;
	cout<<a-temp.size();
}`

正常结果应该是-8
但是实际上是 如下
在这里插入图片描述
之后又尝试了别的类型数据
发现 double,float 类型数据所得结果是正常的
而 char,long long 类型数据还是会发生溢出(可能是溢出吧。。)

/
(分割线)

第二次编辑
原来vector . size( )是一种八字节的无符号类型unsign int 64
其优先级在 int 之上 double 之下
与 int 型数据一起运算时发生类型转换,int 转换为vector . size() 的类型(unsign int 64);
故会出现溢出
所得数据和2^64高度相近即可证明这一点
在这里插入图片描述
而与double类型一起运算则会转换为double型
变为有符号64位整型
故不会溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值