if语句分析:
if语句用于根据条件选择执行语句,if语句可以单独出现,else语句不能独立存在且总与与它最近的if相匹配
else语句后可以接其他if语句。
if语句中零值比较的注意点:
1、bool变量应该直接进行判断,不需要进行比较
bool b = TRUE; if(b) { //statement1 } else{ //statement2 }
2、变量与0进行比较时,0值应该出现在比较符号的左边
int i=0; if( 0 == i ) { //statement1 } else{ //statement2 }
3、float变量不能直接进行零值比较,需要定义精度。(float不精确)
#define EPSINON 0.0000000001 float f = 0.0; if( (-EPSINON <= f) && (f <= EPSINON) ) { //statement1 } else{ //statement2 }
switch语句分析:
switch语句对应单个条件多个分支的情形:
case语句分支必须有break,否则会导致分支重叠;
default语句有必要加上,来处理特殊情况。
case语句中的值只能是整型或者字符型:
case语句的排列顺序:按照字母或者数学顺序排列各条语句;
正常情况放在前面,异常情况放在后面。
default语句只用于处理真正的默认情况。
观察下面代码,判断输出:
#include <stdio.h> void f1(int i) { if(i<6) { printf("Failed!\n"); } else if( (5<i) && (i<=8) ) { printf("Good\n"); } else { printf("Excellent!\n"); } } void f2(char i) { switch(i) { case 'c': printf("C\n"); break; case 'd': printf("D\n"); break; case 'f': printf("F\n"); break; default: printf("Default\n"); break; } } int main() { f1(1); f1(6); f1(9); f2('c'); f2('d'); f2('f'); f2('h'); return 0; }
在Linux下使用Gcc编译运行:
delphi@delphi-vm:~/will$ ./a.out Failed! Good Excellent! C D F Default
if语句和switch语句在某些场合可以互相对换使用:
void f3(int i) { switch(i) { case 1: printf("1\n"); break; case 2: printf("2\n"); break; default: printf("3\n"); } }
划重点:一定要注意“=”赋值操作符和“==”比较操作符的误操作。建议将常量放在比较运算符的左边。
小结:if语句常用于复杂逻辑进行判断的情形;
switch语句适用于对离散值进行判断的情形中;
if语句和switch语句在功能上可以互相替换;
if语句对于“按片”分支判断的情形更加简洁;
switch语句对于多分支判断的情形更加简洁。