智能车制作
标题:
一个关于C语言编程效率的问题
[打印本页]
作者:
oo7ak47666
时间:
2010-3-13 20:11
标题:
一个关于C语言编程效率的问题
今天看到了一个关于C语言循环效率的问题。
for(i=0;i<strlen(str);i++)
这样效率会比较低。
若改为:
CHANG=strlen(str)
for(i=0;i<CHANG;i++)
会好一些。
这当然比较好理解。
后来还有人说,若用#difine CHANG strlen(str);
效果更好这是为什么呢?
作者:
peilet
时间:
2010-3-13 20:11
建议你看看这本书 里面有相关效率问题的介绍
http://www.znczz.com/thread-3964-1-1.html
作者:
云淡风轻
时间:
2010-3-14 16:23
这是用宏定义,计算机对于宏的处理是,只在开始时处理一次,之后不再处理,所以效率很高
作者:
peilet
时间:
2010-3-15 17:23
for(i=0;i<strlen(str);i++)
要调用strlen函数多次
CHANG=strlen(str)
for(i=0;i<CHANG;i++)
只调用一次
作者:
oo7ak47666
时间:
2010-3-16 14:42
回复
4#
peilet
谢谢~~
作者:
oo7ak47666
时间:
2010-3-16 14:43
回复
2#
云淡风轻
宏定义不是只在编译时有用吗?相当于用#define A B中的B代替A而已吗?
作者:
peilet
时间:
2010-3-16 15:11
回复
6#
oo7ak47666
不客气。他的意思就是在编译(预处理)的时候进行字符替换
作者:
oo7ak47666
时间:
2010-3-16 15:25
回复
7#
peilet
我也是把宏定义理解为
编译(预处理)的时候进行字符替换 ,那这样在循环时,也要进行多次的strlen()吗?
作者:
peilet
时间:
2010-3-16 19:05
回复
8#
oo7ak47666
是的,也是要调用很多次。define只起到字符替换的作用,谭的C语言书里写的很清楚。如果宏真的能代替函数并且提前编译,那样整个程序差不多都可以用宏来写了。
作者:
lxh7792
时间:
2010-3-16 21:30
听说有这个说法~~~
作者:
oo7ak47666
时间:
2010-3-16 23:12
回复
10#
lxh7792
你是说在这个事例当中,用了define,可以提高程序效率吗?
作者:
oo7ak47666
时间:
2010-3-16 23:14
回复
10#
lxh7792
你是说在这个事例当中,用define可以提高程序运行效率?
作者:
anjiayu
时间:
2010-3-17 12:36
路过看看
作者:
alexzhangkaiqi
时间:
2010-3-17 12:47
回复
12#
oo7ak47666
显然是降低了
作者:
aa8473229
时间:
2010-3-17 14:33
个人认为没变 #define 是宏定义 应该是给编译器看的吧 机器的话。。。。。因为我对计算机不是很了解 所以非专业
作者:
一毛钱~~~~~~
时间:
2012-4-17 23:42
估计不会。。。不确定,。。
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2