专题一关键字的剖析----3.if,switch,do,while,for分析

来源:互联网 发布:php 循环倒计时 编辑:程序博客网 时间:2024/06/05 14:11

if语句

if根据条件选择执行语句(两路,二选一,类似二叉树),else不能独立存在并且和前面离它最近的if匹配。
注意:if语句中零值比较要小心。


bool类型
bool类型的变量应该直接出现在条件中(作为flag或者开关),不要再和其它变量进行比较。C语言本身是没有bool类型的,由编译器厂商自行规定设计,造成相同的代码在不同的编译器环境下得到的结果不一致。C语言只规定了非0为真(-1也为真)。

bool b=TRUE;if(b){  //statement 1}Iif(!b){  //statement 2}

普通整型变量和0(常量)比较时,0(常量)应该出现在比较符号左边,因为C语言中的等于符号==和我们平时生活中=容易混淆出错,可以巧妙利用编译器左值不能为常量来避免出错。

if(0==1){   //statement 1}else{  //statement 2}


float类型和0值的比较

float类型的变量不能直接和0值比较,需要定义精度来约束(数学上的夹逼原理),只能大约相等。

计算机采用离散的值来模拟表示数据,有精度限制,并不能完全正确地表示浮点型变量(毕竟数学上浮点数是无穷无尽的,而计算机不可能表示出来)。

#define EPSINON 0.00000001float f=0.0;if((EPSINON<=f)&&(f>=EPSINON)){    //statement 1}else{    //statement 2}


switch语句

switch语句对应单个条件多个分值的情形

switch的限制性:

     Case语句中的值只能是整型或者字符型

 每个case分支语句必须要有break,否则会导致分支重合

    Default语句有必要加上,以处理特殊情况

Case语句排序原则:

按字母或者数字的顺序排列(方便调试和二次开发);

正常的情况放在前面,异常的放在后面;default语句只用于处理真正的默认情况。


小结:

if语句实用于按“范围”进行判断的情形;

switch适合对各个离散值分别进行判断的情形。


循环语句:

do语句先执行后判断,循环体至少执行一次;

while语句先判断后执行,循环体可能不执行;

for语句先判断后执行,比while更简洁。

int fun(int n){    int ret=0;    while(n&&(ret +=n--)); //n为负数死循环n>0}int fun2(int n){    int ret=0;    int i=0;for(i=1;i<=n;i++){    ret+=1;}    return ret;}int fun3(int n){   int ret=0;   if(n>0)    {    do{    ret+=n--;    }while(n);    }
    return ret;}


break语句

break终止循环,continue终止本次循环。

那switch能否用continue?

    C语言在设计break和contiue时,break被设计用来跳出一个代码块,而continue是结束本次循环,必须用在循环中,所以switch不能用continue。


一般函数设计思路:

在函数中分配资源,判读是否进行,是执行函数语句(否释放资源退出函数),释放资源退出函数。

int fun(int n){    int i=0;    int ret=0;    int * p=(int*)malloc(sizeof(int)*n);    do    {        if(NULL==p) break;        if(n<0) break;        for(i=0;i<n;i++)       {         p[i]=i;         printf(“%d\n”,p[i]);        }        ret=1;    }while(0);    free(p);    retuen ret;}//巧用DoWhile统一函数(单入口单出口)的结构为申请资源,执行功能,释放资源,让函数结构更清晰,防止内存泄漏。






阅读全文
0 0
原创粉丝点击