智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5085|回复: 15
打印 上一主题 下一主题

[编程类] 一个关于C语言编程效率的问题

  [复制链接]

8

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
479
威望
327
贡献
114
兑换币
20
注册时间
2009-7-27
在线时间
19 小时
跳转到指定楼层
#
发表于 2010-3-13 20:11:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1贡献
今天看到了一个关于C语言循环效率的问题。
   for(i=0;i<strlen(str);i++)
   这样效率会比较低。
  若改为:
  CHANG=strlen(str)
  for(i=0;i<CHANG;i++)
  会好一些。
  这当然比较好理解。
  后来还有人说,若用#difine CHANG strlen(str);
  效果更好这是为什么呢?

6

主题

741

帖子

0

精华

常驻嘉宾

大坏蛋

Rank: 8Rank: 8

积分
3542

优秀会员奖章论坛元老奖章在线王奖章活跃会员奖章

威望
2051
贡献
627
兑换币
193
注册时间
2012-3-11
在线时间
432 小时
15#
发表于 2012-4-17 23:42:30 | 只看该作者
估计不会。。。不确定,。。
回复

使用道具 举报

15

主题

58

帖子

0

精华

高级会员

Rank: 4

积分
624
威望
373
贡献
111
兑换币
34
注册时间
2010-3-13
在线时间
70 小时
14#
发表于 2010-3-17 14:33:13 | 只看该作者
个人认为没变 #define 是宏定义 应该是给编译器看的吧 机器的话。。。。。因为我对计算机不是很了解 所以非专业
回复

使用道具 举报

0

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
767
威望
319
贡献
76
兑换币
6
注册时间
2009-6-22
在线时间
186 小时
13#
发表于 2010-3-17 12:47:27 | 只看该作者
回复 12# oo7ak47666


    显然是降低了
回复

使用道具 举报

2

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
威望
286
贡献
37
兑换币
6
注册时间
2009-8-10
在线时间
38 小时
12#
发表于 2010-3-17 12:36:42 | 只看该作者
路过看看
回复

使用道具 举报

8

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
479
威望
327
贡献
114
兑换币
20
注册时间
2009-7-27
在线时间
19 小时
11#
 楼主| 发表于 2010-3-16 23:14:28 | 只看该作者
回复 10# lxh7792


    你是说在这个事例当中,用define可以提高程序运行效率?
回复

使用道具 举报

8

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
479
威望
327
贡献
114
兑换币
20
注册时间
2009-7-27
在线时间
19 小时
10#
 楼主| 发表于 2010-3-16 23:12:42 | 只看该作者
回复 10# lxh7792


    你是说在这个事例当中,用了define,可以提高程序效率吗?
回复

使用道具 举报

9

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
威望
344
贡献
46
兑换币
26
注册时间
2009-11-24
在线时间
40 小时
9#
发表于 2010-3-16 21:30:56 | 只看该作者
听说有这个说法~~~
回复

使用道具 举报

7

主题

262

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2478
威望
499
贡献
1803
兑换币
0
注册时间
2009-5-12
在线时间
88 小时
8#
发表于 2010-3-16 19:05:12 | 只看该作者
回复 8# oo7ak47666


    是的,也是要调用很多次。define只起到字符替换的作用,谭的C语言书里写的很清楚。如果宏真的能代替函数并且提前编译,那样整个程序差不多都可以用宏来写了。
回复

使用道具 举报

8

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
479
威望
327
贡献
114
兑换币
20
注册时间
2009-7-27
在线时间
19 小时
7#
 楼主| 发表于 2010-3-16 15:25:04 | 只看该作者
回复 7# peilet


    我也是把宏定义理解为  编译(预处理)的时候进行字符替换  ,那这样在循环时,也要进行多次的strlen()吗?
回复

使用道具 举报

7

主题

262

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2478
威望
499
贡献
1803
兑换币
0
注册时间
2009-5-12
在线时间
88 小时
6#
发表于 2010-3-16 15:11:28 | 只看该作者
回复 6# oo7ak47666


    不客气。他的意思就是在编译(预处理)的时候进行字符替换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-11 15:09 , Processed in 0.105715 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表