应该是无符号和有符号数比较的问题,
size()的类型是uint 是无符号的,有符号和无符号比较会先转换为无符号数
-1 32位二进制是 10000000 00000000 00000000 00000001 第一个1代表符号为负数,
转换为无符号数第一个1就不用当成符号,直接转换为2147483649。
2147483649 》 15 所以进不去循环
以下答案引用自GPT-3大模型,请合理使用:
示例
这是一个典型的越界问题,当您使用size初始化的时候,数组只有10个元素,但当您尝试用15个元素来遍历它时,它会访问不存在的内存,这是不允许的。
示例代码如下:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int size = 10;
for (int i=0; i<15; i++)
{
//当i大于size时,就会导致arr[i]访问不存在的内存,其它操作也是一样的
std::cout<<arr[i]<<std::endl;
}
如果我的回答解决了您的问题,请采纳我的回答