前言
我们都知道 程序 = 数据结构 + 算法,而学习数据结构前,一定要把数据类型啃透,负责就可能出现各种段错误或者溢出的错误。而对于初学者来说,学习数据类型的基本知识是容易的,但是有些底层知识与比较偏的知识,我认为也是需要掌握的。
目录
分支结构
switch语句
if语句
循环结构
goto语句
do while 与 while语句
for语句
正文
分支结构
switch语句
switch(a) //a只能为整形:整数或字符。 { case 1: //i只能为常量或确定的常量表达式,不能包括变量 case 2: //如果两个或多个case之间没有语句,就是多个case公用最后一个case的语句 default : //无论default的位置在哪,都是当所有case都为匹配上时,才执行。 //注意,如果default不在最后,而语句中也没有break;,那么也会接着执行下面的case //语句 }
if语句
if(判断式)
这个判断式里可以是任意合法的C语言表达式,当然,for语句,while语句中的判断式同理
总所周知,C语言里,用“非0”的值来表达“真”,用“0”来表达“假”。
那么问题来了,以下程序会输出什么呢
int a,b; //为赋初值 if(a = b) //注意这是赋值符号,不是等号 { printf("1"); } else { printf("2"); }
大家有答案了吗,答案是不确定,有可能是输出1,也有可能是输出2
那究竟是什么时候输出1,什么时候输出2呢
(a = b)我们判断输出什么,主要是这个判断式是值是为0,还是非0。b赋值给a,主要就是看b的值,如果b值为0,则判断式为假,输出2;如果b值为1,则判断式为真,输出1。而a,b未赋值,并不是没有值,系统会随机给a,b赋值,所以答案不确定。
循环结构
goto语句
goto语句:让CPU去指定的地方执行; 无条件跳转语句。
语法:
goto 行标识(语句标识)
“行标识”: 用来标识一行的地址
行标识一般写在一行的最前面,当然,行标识允许前面有空白符(eq:空白、tab..)
行标识也属于标志符。
注意:乱用goto语句,会使程序的可读性变差。一般不建议使用goto 语句,为了使代码更加清晰,可读性强。
do while 与 while语句
当do while 与 while语句的判断条件相同时,do while 语句会比 while 多执行一次,相当于do while 语句是先执行后判断,而 while 语句是前判断后执行。
for语句
for(表达式1;表达式2;表达式3) { ...... }
以上程序相当于以下程序
for(表达式1;表达式2;) { ...... 表达式 3; }
意思是,for循环语句,最后一句一定是表达式3,执行完这句后,才会进行表达式2的判断。表达式3的执行不受for循环里面的语句的影响,如以下程序
for(表达式1;表达式2;) { ...... continue; 表达式 3; }
即使中间有个continue语句,提前结束了本次循环,在本次循环最后也要执行表达式3,因此我们可以利用表达式3的这种特性,写出许多精简漂亮的程序代码。