[code defect]evaluates to an address that could be at negative offset of an array

最近公司在掃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。一定要虛心,切不能傲慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章