c++不进入for循环问题

img


为什么不进for循环呢,把size换成15就进了,这是为啥呢

应该是无符号和有符号数比较的问题,
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; 
}

如果我的回答解决了您的问题,请采纳我的回答