C语言复习
变量与零值比较
布尔变量与零值比较
1.不可将布尔变量直接与TRUE,FALSE或者1,0进行比较。
下面代码都是不良风格
if(flag == true)
if(flag == 1)
if(flag == false)
if(flag ==0)
整型变量与零值比较
1.应当将整型变量用 “==”或“!=” 直接与0比较
浮点变量与零值比较
1.不可以将浮点变量用”==”或“!=”与任何数字比较
if(x == 0.0) //错误的!!
正确写法:
if((x>=-EPSINON)&&(x<=EPSINON))
其中EPSINON是允许的(即精度)
指针变量与零值比较
1.应当将指针变量用”==”或“!=”与NULL比较。
if(p == NULL)
if(p != NULL) //p与NULL显示比较,强调p是指针变量
不要写成:
if( p == 0)
if(p != 0) //容易让人误解p是整型变量
或者:
if(p)
if(!p) //容易让人误解p是布尔变量
switch语句
switch(表达式)
语句
注意: 表达式的结果必须是整型值!!!
如果在switch语句的执行中遇到了break语句,执行流就会立即跳转到语句列表的末尾。
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使⽤
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("n = %d, m = %d\n", n, m);
system("pause");
return 0;
}
结果:n = 3, m = 5;
循环
while循环
1.break用于永久终止循环
2.continue用于终止当前的那次循环,
注意:这两条语句的任何一条如果出现于嵌套循环的内部,他只对最内层的循环其作用,不会影响外层循环的执行。
for循环
1.不可以在for循环体内修改循环变量,放置for循环失去控制。
2.建议for语句的循环控制变量的取值采取“半开半闭区间”写法。
A: for(int x=0;x<N;x++)
{
...
}
B: for(int x=0;x<=N-1;x++)
{
.....
}
与 B相比,A的写法更加直观。
阅读下面小程序,循环执行了多少次??
for(i = 0, k= -1;k=0;i++,k++)
k++;
答案:0次。
for(i = 0, k= -1;k=1;i++,k++)
k++;
答案:无线循环
练习:编写代码,演⽰多个字符从两端移动,向中间汇聚
void Test()
{
char buf[80] = "################";
char src[] = "Hello everyone!!";
int i, j;
printf("%s\n", buf);
for (i = 0, j = strlen(src) - 1; i <= j; i++, j--)
{
buf[i] = src[i];
buf[j] = src[j];
Sleep(1000);
printf("%s\n", buf);
}
}