求代码优化

七擒关羽 2011-09-21 03:06:44

typedef struct EXP
{
.....
}EXPINFO;

void fun(...)
{
int index = 0;
int len;
EXPINFO exp;
len = seizeof(exp);
memset(&exp,0,len);
while(index*len < 100 )//这个会警告
{
.....
index++;
}


对while进行优化
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-09-21
  • 打赏
  • 举报
回复
while(index < 100/sizeof(exp) )
七擒关羽 2011-09-21
  • 打赏
  • 举报
回复
这个鸟编译器还是警告,我用了比较笨的方法

typedef struct EXP
{
.....
}EXPINFO;

void fun(...)
{
int index = 0;
int len;
EXPINFO exp;
len = sizeof(exp);
memset(&exp,0,len);
int count = index*len;
while( count < 100 )//这个就不会警告,蛋疼的编译器
{
.....
index++;
count = index*len;
}
....
}

jackyjkchen 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 studycbc 的回复:]

len是定长,但index*len是动长
[/Quote]

反过来

index * len < 100不就相当于

index < 100 / len么

100 / len是定长吧
七擒关羽 2011-09-21
  • 打赏
  • 举报
回复
一般的编译器会优化,但现在使用的编译器不会优化,看着警告比较碍眼
七擒关羽 2011-09-21
  • 打赏
  • 举报
回复
len是定长,但index*len是动长
jackyjkchen 2011-09-21
  • 打赏
  • 举报
回复
len是个定长,运算写外面,效率高些
七擒关羽 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sugar13 的回复:]
seizeof(exp);
是什么东东?
[/Quote]

这个我打字错了 是 sizeof
失散糖 2011-09-21
  • 打赏
  • 举报
回复
seizeof(exp);
是什么东东?
七擒关羽 2011-09-21
  • 打赏
  • 举报
回复
该成for也是一样的警告,可能是我这个编译器的问题,只要在判断条件中存在运算就会警告
就想叫yoko 2011-09-21
  • 打赏
  • 举报
回复
你这个需求写for更直观点吧

另外你干吗要这样比较
你如果是有100个结构体元素遍历应该是 index<100

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧