if语句的分析
1. if语句中的零值比较
- bool型变量出现在条件中不要进行比较如
if(bool a==1)
因为C语言中bool类型真为非0,假为0. - 普通变量和0比较时候应写成
if(0==a)
,因为假如写成if(a==0)
不小心少些成if(a=0)
有些编译器不会报错这种错误很难发现 - float变量不能直接在if中或者其他条件语句中比较,需要定义精度
#define E 0.00001
float f = 5.0;
if((5.0-E<=f)&&(f<=5.0+E))
#switch语句
- default语句有必要加上,以处理特殊情况
- case中的值只能是整形或字符型
- case中正常情况放前面,异常的情况放后面
- default语句用于处理真正的默认情况
switch (表达式)
{
case 常量:
代码
break;
case 常量:
代码
break;
default:
代码块
}
break和continue的区别
- break终止循环或块执行
- continue表示终止本次循环体,进入下次循环,只能用于循环,所以不能用switch
do,while语句的妙用
该函数缺点
1.一次申请,重复使用free()释放;假如程序少写一个free会产生内存泄漏,如果多次被调用会使程序崩溃
int func(int n)
{
int i = 0;
int ret = 0;
int* p = (int*)malloc(sizeof(int)*n);
if(NULL == p)return 0; //如果申请内存失败则返回
if( n < 0) //如果申请的大小小于0则返回
{
free(p);
return 0;
}
if( n > 10000) //如果申请的大小小于0则返回
{
free(p);
return 0; }
for(i = 0;i < n; i++)
{
p[i] = i;
printf("%d\n",p[i]);
}
return 1;
}
改进方法: 申请一次对应只释放一次
int fu