【发布时间】:2017-06-09 06:18:03
【问题描述】:
我有一个内存芯片,它具有由嵌入式系统串行读取的数据。存储设备有 10 个位置,每个位置具有以下信息:customerID、NumOfParts、MFGName。 这是我为此编写的 C 代码版本。
在 C 文件“PartName.h”中
//"PartName.h"
#ifndef PartName_H
#define PartName_H
typedef UINT8 MFGName_Struct_t [10];
typedef struct
{
UINT8 customerID;
UINT8 NumOfParts;
MFGName_Struct_t MFGName;
}IDENT_Struct_t;
typedef struct MFG_Struct_t
{
UINT8 <some other variable>;
UINT8 <some other variable>;
IDENT_Struct_t Ident1;
IDENT_Struct_t Ident2;
IDENT_Struct_t Ident3;
IDENT_Struct_t Ident4;
IDENT_Struct_t Ident5;
IDENT_Struct_t Ident6;
IDENT_Struct_t Ident7;
IDENT_Struct_t Ident8;
IDENT_Struct_t Ident9;
IDENT_Struct_t Ident10;
} MFG_Struct_t;
#endif
在 C 文件“HighNum.c”中
//"HighNum.c"
#include "PartName.h"
static MFG_Struct_t MFG;
UINT8 HighNum(void)
{
//UINT8 i;
UINT8 highestNum = 0;
//for (i = 0;(i < 10);i++)
if (MFG.Ident1.NumOfParts > MFG.Ident2.NumOfParts)
{
highestNum = MFG.Ident1.NumOfParts;
}
if (MFG.Ident2.NumOfParts > MFG.Ident3.NumOfParts)
{
highestNum = MFG.Ident2.NumOfParts;
}
if (MFG.Ident3.NumOfParts > MFG.Ident4.NumOfParts)
{
highestNum = MFG.Ident3.NumOfParts;
}
if (MFG.Ident4.NumOfParts > MFG.Ident5.NumOfParts)
{
highestNum = MFG.Ident4.NumOfParts;
}
<and so on>
return highestNum;
}
如何在 C 语言中更有效地做到这一点?使用 for 语句或 While 语句?我考虑过连接数字部分并循环遍历变量...
【问题讨论】:
标签: c for-loop struct while-loop compare