大魔王程序员生成记#03#C语言基础——switch语句,for语句
switch语句
switch语句是多分支选择语句。用来实现如图所示表示的多分支选择结构语句。
switch语句的一般形式如下:
switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
. . .
. . .
case 常量n:语句n
default : 语句n+1
}
说明:
(1)switch后面括号内的“表达式”,其值的类型应为整数类型(包括字符型)。
(2)switch下面的花括号内是一个复合句。这个复合句包括若干语句,它是switch语句的语句体。
注:执行switch语句时,先计算switch后面的“表达式”的值,然后将它与各case标号比较,如果与某一个case标号中的常量相同,流程就转到case标号后面的语句。如果没有与switch表达式相匹配的case常量,流程就转去执行default标号后面的语句。
(3)可没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。
(4)每个case标号的出现次序都不影响执行结果。如:
switch(ch)
{
default:
printf("default\n");
case 'C':
printf("90-100\n");
break;
case 'B':
printf("70-80\n");
break;
case 'A':
printf("60-70\n");
break;
case 'D':
printf("不及格\n");
break;
}
(5)每个case常量必须互不相同;否则就会出现互相矛盾的现象(对switch表达式的同一个值,有两种或多种执行方案)
(6)case标号只起标记的作用。
注:一般情况下,在执行一个case子句后,应当用break语句使流程跳出switch结构,即终止switch语句的执行。最后一个case子句(今为default子句)中可不必加break语句,因为流程已经到了switch结构的结束处。
if else与switch的区别
在反汇编中,switch当超过(>=)4个时,会优化成为一个cmp(compare)[指令进行比较两个操作数的大小],而if 不管有多少次比较,都会被一一进行比较,有几次就会产生几个cmp。
for语句
for语句能够实现循环。
for语句的一般形式为;
for(表达式1:表达式2:表达式3)
{
语句
}
3个表达式的主要作用:
表达式1:设置初始条件,只执行一次,可以为零、一个或多个变量设置初值。
表达式2 :是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。
表达式3:作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。
注:for(循环变量赋初值;循环条件;循环变量增值)
for语句的执行过程:
1.先求解表达式1。
2.求解表达式2。若此条件表达式为真,则执行循环体。
3.求解表达式3。
4.转回执行步骤(2)。
for语句的执行顺序如下图所示:
附加内容
isalpha():判断一个字符是否为字母 返回非0的值
isdigit():判断一个字符是否为十进制数字 返回非0的值
对应头文件<ctype.h>
assert:断言===》DEBUG(VS2012中的模式);Release下断言失效
assert的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。
两个问题:1.断言使用过吗?2.断言是函数吗?断言不是函数,是宏。 sizeof()是关键字
float和0比较是一个范围,在-0.000001和0.000001之间。如:
if(d>=-0.000001&&d<=0.000001)