最近公司在扫code defect,自己负责的代码有报出问题,下面是code的sample
char str[10] = {0};
int i = 0;
for (i = 0; i < 10; i++) {
// str[i] evaluates to an address that could be at negative offset of an array.
str[i] = ‘c’;
}
自己研究了很长时间,也没有看出问题的地方,code运行了很长时间,也没有问题,i也不可能为负数呀。后来想到这只是code defect,不代表运行没有问题。数组的index应该always是正数,那就改了一版,如下:
char str[10] = {0};
unsigned int i = 0;
for (i = 0; i < 10; i++) {
// str[i] evaluates to an address that could be at negative offset of an array.
str[i] = ‘c’;
}
只需要将i从int改为unsigned int就可以了,之后再也没有报过类似的问题。
写出来的code运行没有error和code没有潜在风险是有区别的,如果想成为高级程序员,还是要积累这些代码的经验,你比别人高的地方就在于,你写的code问题少,稳定。别人遇到问题,你能马上解决,这就会成为别人心中的大牛了。养成好的的写代码习惯是非常必要的,改习惯确实是很难受的,尤其是被人review,认为自己的code能够正常运行,这是吹毛求疵,不可能出现reviewer说的问题,这一定是要改的。在review过程中成长,无论是被review,还是做reviewer。一定要虚心,切不能傲慢。
[code defect]evaluates to an address that could be at negative offset of an array
最新推荐文章于 2024-10-08 09:44:01 发布