Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208272
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: C/C++

2014-07-20 19:56:39

if语句用于根据条件选择执行语句;else不能独立存在总是与它最近的if相匹配;else语句可以接连其他if语句。
switch语句对应单个条件多个分值的情形;每个case语句分支必须有break,否则会导致分支重叠。
default语句有必要加上以处理特殊情况。
case语句中的值只能是整型或字符型;
case语句排列顺序分析:按字母或数字顺序排列各条语句;正常情况放前面异常情况放后面。
default语句只用于处理真正的默认情况。
if语句适用于需要按片进行判断的情况,switch适用于对各个离散值进行分别判断的情形。
if语句可以从功能上代替switch,但switch无法代替if语句,switch语句对于分支判断的情形更加简洁。
例如:

#include

void f1(int i)
{
    if( i < 6 )
    {
        printf("Failed!\n");
    }
    else if( (6 <= i) && (i <= 8) )
    {
        printf("Good!\n");
    }
    else
    {
        printf("Perfect!\n");
    }
}

void f2(char i)
{
    switch(i)
    {
        case 'c':
            printf("Compile\n");
            break;
       
        case 'd':
            printf("Debug\n");
            break;
       
        case 'o':
            printf("Object\n");
            break;
           
        case 'r':
            printf("Run\n");
            break;
       
        default:
            printf("Unknown\n");
            break;
           
    }
}

int main()
{
    f1(5);
    f1(9);
   
    f2('o');
    f2('d');
    f2('e');
}
运行结果:
Failed!
Perfect!
CompileCompileCompile
Debug
Uknown
********************************************************
if语句中零值比较的注意点:bool型变量应该直接出现于条件中,不要进行比较。c语言的真假由0非0决定
例如:
#include
typedef enum  _bool
{
false=0,
true=1
}bool;
int main()
{
bool b;
int i=-1;
if(i)
{
printf("ok\n");
}
else
{
printf("error\n");
}
return 0;
}
运行结果
ok
如果改成这样:

#include
typedef enum  _bool
{
false=0,
true=1
}bool;
int main()
{
bool b=true;
int i=-1;
if(b)
{
printf("ok\n");
}
else
{
printf("error\n");
}
return 0;
}
运行结果
ok
如果改成这样:
#include
typedef enum  _bool
{
false=0,
true=1
}bool;
int main()
{
bool b;
int i=-1;
if(b==1)
{
printf("ok\n");
}
else
{
printf("error\n");
}
return 0;
}
运行结果
error
********************************************
普通变量和0值(其他整数)比较时,0值(或其他整数)应该出现在比较符号左边。因为这样可以避免失误检查不出程序debug。
float型变量不能直接进行0值比较,需要定义精度。这是计算机离散特性决定的。例如:
#include
typedef enum  _bool
{
false=0,
true=1
}bool;
#define E 0.0000001

int main()
{
bool b;
int i=-1;
float f=5.0;

if((5-E<=f)&&(f<=5+E))
{
printf("ok\n");
}
else
{
printf("error\n");
}
return 0;
}
运行结果:
ok

阅读(1258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~