1.问题描述
容器size()无符号数导致的for循环崩溃
 for (int index = 0; index < static_cast(intVec.size())-1; index++)
 {
 printf(“%d”,intVec[index]);
 }
 如果不做强转,可能会有两个问题:
 (1)编译不过
 (2)intVec[index]越界崩溃
2.测试
(1)编译不过
 Windows编译成功

 Linux编译警告
(2)intVec[index]越界崩溃
 
 崩溃了。
原因分析
打一下日志,发现(intVec.size())-1的unsigned int类型其实是429496…,在这篇有推导这个原因,负数强制转换为无符号数出错,所以for循环会进。
 
 
3.避免问题
(1)如问题描述中的,对vec.size()做一次强转;
 (2)判断一下vec.size()-1 大于0。



















