guisi 发表于 2011-4-15 13:54:46

IAR FOR 430 C语言问题

P5DIR|=0X10与P5DIR|=(1<<4)有没有区别?执行效率?

alengend 发表于 2011-4-15 14:11:24

我认为后者效率肯定略低,因为要先移位

cike 发表于 2011-4-15 14:21:06

前者高,后者低,如果做乘除法运算后者这种形式效率很高

lidongliping 发表于 2011-4-15 14:54:23

编译后,看看产生的汇编代码。

正常情况下,因为1 << 4中的1和4都是常量,编译器会自动换成0x10,这种情况下,效率是一样的。

没有验证,仅供参考。

lps0501090117 发表于 2011-4-15 20:54:47

经验证1《4都是常量,编译器会自动变异成0x10,代码与上一句完全相同,但是换成
unsigned char a=4;
P5DIR|=(1<<a);
则会多编译出很多语句,效率变低了。

XMLK 发表于 2011-4-19 22:01:01

学习了!

396398456 发表于 2011-5-6 18:43:37

直接赋值可能更快些吧

guisi 发表于 2011-5-19 14:23:36

谢谢各位!还需要再努力学习C语言啊

zfy890612 发表于 2011-5-19 22:29:19

回复【楼主位】guisi 柯护祥
---------------------------------------------------------------------
第一个是按位相或只能打开一个端口, 后面那个是能够开多个端口的。
页: [1]
查看完整版本: IAR FOR 430 C语言问题