外观
02.循环分支
约 993 字大约 3 分钟
循环分支C个人随笔
2020-10-09
一、分支语句
1、if语句分析
if语句中零值比较的注意点
- bool型变量应该直接出现于条件中,不要进行比较;
- 变量和0值比较时,0值应该出现在比较符号左边;
- float型变量不能直接进行0值比较,需要定义精度;(虽然定义的是0.0,但是在内存里可能是0.0000001)

2、switch语句分析
(1)case语句中的值只能是整型或字符型
(2)case语句的排列顺序
-按字母或数字顺序排列各条语句
-正常情况放在前面,异常情况放在后面
- default语句只用于处理真正的默认情况
3、小结
- if语句适用于复杂逻辑进行判断的情形中
- switch语句适用于对离散值进行判断的情形中
- if语句和switch语句在功能上可以相互替换
- if语句对于“按片”分支判断的情形更加简洁
- switch语句对于多分支判断的情形更加简洁
二、循环语句
1、do , while, for的区别
- do语句先执行后判断,循环体至少执行一次
- while语句先判断后执行,循环体可能不执行
- for语句先判断后执行,相比while更简洁
2、break和continue的区别
- break表示终止循环的执行;
- continue表示终止本次循环,进入下次循环执行;
3、小结
- for循环先进行判断再进入循环体
- for循环适合于循环次数固定的场合
- while循环先进行判断再进入循环体执行
- while循环适合于循环次数不定的场合
- do ... while循环先执行循环体再进行条件判断
- do ... while循环至少执行一次循环体
三、goto 和 void分析
1、遭人遗弃的goto
高手潜规则:禁用goto
项目经验:程序质量与goto的出现次数成反比
最后的判决:将goto打入冷宫
2、void修饰函数返回值和参数
- 如果函数没有返回值,那么应该将其声明为void
- 如果函数没有参数,应该声明其参数为void
void修饰函数返回值和参数是为了表示“无”
以上程序编译正常,未指定类型,就默认int类型,就认为无限多的int类型入参。
3、不存在void变量
一C语言没有定义void究竟是多大内存的别名。
没有void的标尺,无法在内存中裁剪出void对应的变量。
指针默认是4/8字节。

4、小贴士
- ANSI C:标准C语言的规范;
- 扩展 C:在ANSI C的基础上进行了扩充;

5、void指针的意义
- C语言规定只有相同类型的指针才可以相互赋值;
- void* 指针作为左值用于“接收”任意类型的指针;
- void* 指针作为右值使用时需要进行强制类型转换。
6、小结
- 现代软件工程中禁用goto语句;
- void是一种抽象的数据类型;
- void类型不能用于定义变量;
- void类型用于声明函数无参数;
- void类型用于声明函数无返回值;
- 可以定义void*类型的指针;
- void*类型的指针可以接受任意类型的指针值。
