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);
}
}