|
发表于 2014-11-12 21:45:20
|
显示全部楼层
C接触的很早,但真正是这两年才开始应用的,之前都是写汇编居多,很习惯的我都会把C编译的结果汇编对照一下,所以在写C的时候我都不会把他当做理所当然,像if也是后来才知道有顺序性的,所以一开始为了确定起见都是采取第一种方式,后来才改写成第二种方式;
第一种:
If(x==a)
{
...
}
If(y==b)
{
...
}
第二种:
If(x==a && y==b)
{
...
}
而采取siwtch时我也都没有预设他会不会照顺序执行,因为当条件有独立性,所差的只是执行时间,而不会引响到程序的逻辑性,除非是位相关的比较,例如 条件为 bit0, bit0 & bit1, bit0 & bit2,转成判断为 3,1,5(假设判别顺序是这样)
第三种:
Switch(num)
{
Case 3:
..
Break ;
Case 1:
..
break ;
Case 5:
..
break ;
}
第四种:
If(num==3)
{
..
}
else if(num==1)
{
..
}
else if(num==5)
{
..
}
那么这时条件的判断可能有顺序性,在我不确定switch的特性时,我绝不会用switch的方式,也就是第三种,而是改用 if 照当时条件的顺序性来判别(第四种0!
我了解版主的用心,是不希望大家把它当成理所当然,除非清楚的知道指令的前因后果,本身对硬件逻辑概念还匴可以,而硬件就有很强的逻辑性,转为软件考虑点会更多,所以不会去犯这种低级错误的!!多谢版主的谨慎关心!! |
|