优化这段代码 int SerialAdd(int serialid,int i,int j) { float val; val = gRunPara.COMMS_SerialInfo[serialid][i].val; if (j == 0) { val += pow(10,0); } else { if (val < 10) { if (j== 1) val += pow(10,j-1); } else if (val >= 10 && val < 100) { if (j== 1) val += pow(10,j); else if (j== 2) val += pow(10,j-2); } else if (val >= 100 && val < 1000) { if (j== 1) val += pow(10,j+1); else if (j== 2) val += pow(10,j-1); else if (j== 3) val += pow(10,j-3); } else if (val >= 1000 && val < 10000) { if (j== 1) val += pow(10,j+2); else if (j== 2) val += pow(10,j); else if (j== 3) val += pow(10,j-2); else if (j== 4) val += pow(10,j-4); } else if (val >= 10000 && val < 100000) { if (j== 1) val += pow(10,j+3); else if (j== 2) val += pow(10,j+1); else if (j== 3) val += pow(10,j-1); else if (j== 4) val += pow(10,j-3); else if (j== 5) val += pow(10,j-5); } else if (val >= 100000 && val < 999999) { if (j== 1) val += pow(10,j+4); else if (j== 2) val += pow(10,j+2); else if (j== 3) val += pow(10,j); else if (j== 4) val += pow(10,j-2); else if (j== 5) val += pow(10,j-4); else if (j== 6) val += pow(10,j-6); } } gRunPara.COMMS_SerialInfo[serialid][i].val = val; }
时间: 2023-07-15 10:15:31 浏览: 67
可以考虑使用数组和循环来简化代码。
首先,可以把每个范围的处理方式写成一个函数,这样可以减少代码的重复性。例如:
```
void handleValRange(float &val, int j, int start, int end, int powVal) {
if (val >= start && val < end) {
if (j == 1) {
val += pow(10, j + powVal);
} else if (j > 1 && j < powVal + 1) {
val += pow(10, j + powVal - 1);
} else if (j > powVal) {
val += pow(10, j + powVal - 2 * (j - powVal));
}
}
}
```
然后,可以使用一个循环来遍历所有范围并调用上述函数进行处理。例如:
```
int SerialAdd(int serialid, int i, int j) {
float &val = gRunPara.COMMS_SerialInfo[serialid][i].val;
if (j == 0) {
val += pow(10, 0);
} else {
int ranges[] = {10, 100, 1000, 10000, 100000, 999999};
int powVals[] = {1, 2, 3, 4, 5, 6};
for (int k = 0; k < 6; k++) {
handleValRange(val, j, ranges[k], ranges[k + 1], powVals[k]);
}
}
gRunPara.COMMS_SerialInfo[serialid][i].val = val;
}
```
这样,代码就会变得简短、易读,并且容易维护和扩展。
阅读全文