全部博文(2065)
分类: C/C++
2010-01-21 21:50:15
c语言逻辑判断语句
[整理人:hkebao@126.com 整理时间:
1、 IF语句
布尔变量与零值比较
If(flag) //表示flag为真
If(!flag) //表示flag为假
If(flag =
= TRUE)
If(flag =
= 1)
If(flag =
= FALSE)
If(flag =
=0)
整型变量与零值比较
if (value == 0)
if (value != 0)
浮点变量与零值比较
不可将浮点变量用“==”或“!=”与任何数字比较(浮点不可比较的!)
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将
if (x = = 0.0) // 隐含错误的比较 (浮点类型数据不可比,将其转换成>=类型处理)
转化为
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
指针变量与零值比较
应当将指针变量用“= =”或“!=”与NULL比较。(指针与NULL比较的!)
指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下:
if (p == NULL) // p与NULL显式比较,强调p是指针变量
if (p != NULL)
不要写成
if (p == 0) // 容易让人误解p是整型变量
if (p != 0)
或者
if (p) // 容易让人误解p是布尔变量
if
(!p)
(切记:指针类型的变量的零值= =NULL)
2、 循环语句
for语句使用频率最高,while语句其次,do语句很少用。
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数
效率
for (col=0; col<5; col++ ) #将小的循环体套在外面处理效率要高的!
{
for (row=0; row<100; row++)
{
sum = sum + a[row][col];
}
}
要比如下的效率高
for (row=0; row<100; row++)
{
for ( col=0; col<5; col++ )
{
sum = sum + a[row][col];
}
}
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
PS:如果判断放在内部的话就相当于每作一次循环都要进行一次判断效率肯定要低
效率
if (condition)
{
for (i=0; i
DoSomething();
}
else
{
for (i=0; i
DoOtherthing();
}
远比如下的做法效率要高
for (i=0; i
{
if (condition)
DoSomething();
else
DoOtherthing();
}
switch语句的基本格式是:
switch (variable)
{
case value1 : …
break;
case value2 : …
break;
…
default : …
break;
}
每个case语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。