优化这段代码 LCD_DisString((i%9)+1, 20, (char *)gcszOnOff[(int)get_ActionDZInfo_val(UNIT_GAP_RT1064,gapid,DBData[i])]); if (not == 2) { if(draw == (i+1)) { LCD_DisString_Not((i%9)+1, 20, (char *)gcszOnOff[(int)get_ActionDZInfo_val(UNIT_GAP_RT1064,gapid,DBData[i])]); } }
时间: 2024-02-05 07:10:54 浏览: 56
CString,int,string,char之间的转换.txt
4星 · 用户满意度95%
以下是对这段代码的优化建议:
1. 将重复调用的函数get_ActionDZInfo_val(UNIT_GAP_RT1064,gapid,DBData[i])的返回值存储在一个变量中,这样可以避免重复计算,提高效率。
2. 将常量字符串"gcszOnOff"的类型从char*改为const char*,以便更好地表达其只读特性。
3. 将重复使用的表达式(i%9)+1提取出来存储在一个变量中,以提高可读性。
4. 将if语句中的判断条件`(not == 2)`改为`(not != 2)`,以避免可能的逻辑错误。
优化后的代码如下:
```
int index = i % 9 + 1;
const char* onOffStr = gcszOnOff[(int)get_ActionDZInfo_val(UNIT_GAP_RT1064, gapid, DBData[i])];
LCD_DisString(index, 20, (char*)onOffStr);
if (not != 2 && draw == i + 1) {
LCD_DisString_Not(index, 20, (char*)onOffStr);
}
```
阅读全文