记录遇到的一个比较恶心的bug
昨晚在做30. 串联所有单词的子串的时候,偷了个懒没将s字符串的长度用整型变量存,直接调用了size()函数进行运算,由于size()这类求数组长度的接口返回值都是无符号整型,我的答案有用到 (unsigned int)长度 - int变量 作为边界判断条件,但是这种运算符两边类型不匹配的在C++中会触发隐式类型转换,也就是说
(unsigned int)长度 - int变量 预想得到的数为负时,但其结果却是一个非常大的正数(类型转换),导致边界情况的不对,从而导致后续的越界访问。
----------------------------------------------------------------------------------
总结:在C++中有关两个数相减,减号两边的两个数一定要是同类型的,不然有可能触发隐式类型转换,导致不知预估的结果。