5.控制语句


  • goto语句,直接无条件跳转到其他位置,位置用语句标号来标识,命名和变量名规则一样。本课程禁止使用。

if

  • if后面跟的大括号里面这个是语句序列,语句序列只有1个语句可以把大括号省略。
  • if-else一整个当作一个语句来看
  • 多支语句,中间写的是else if()……
  • 用多支语句来判断区间,第一个支是a>=90,第二个支写成a>=80 && a<90是最好的,即使a是整型,a<=89也没那么好,因为如果你要改成浮点数,那a<90的写法是不用改的。
  • 语句序列只有一个语句可以省略大括号的原则,可以应用于else后面直接跟if的情况。
  • if语句的大括号可以用栈来配对。

switch

  • switch只能用来匹配整形。case后是整形。这是因为浮点数有误差,没法匹配。
  • switch语句的执行逻辑:算出括号内表达式的值,然后去下面的case里一一对应。一旦他找到一个case匹配上了,那么在此处进入程序,一句句顺序执行,所以后面的case对他而言就是不存在。如果想要达成一个数一种操作,就要在每一个case的最后加一句break;
  • 按照上面这个逻辑,case和default的排列顺序不影响程序逻辑,只要找到,程序就会在那里开始,找不到,就会到default位置开始。
  • case后面的表达式必须是常量。如果里面有变量参与计算,会报错。
  • case后面的东西不能有重复。

for/while

  • for的括号里是3个表达式,用分号隔开。
  • for的循环逻辑:表达式1只执行一次,然后进入表达式2的判断,执行语句序列,再执行表达式3,再回到表达式2的判断。
  • forwhile互相转换。
    • while可以全部转成for
    • for不能全部转成while,因为有一个情况下逻辑不同:如果语句中含有一句条件下continue;的语句,while会直接去进行运行条件判断,for还会继续执行一句表达式3.
    • 说白了,就是for里面con不continue,都会执行表达式3,while遇到continue是做不到这一点的。
  • for循环适用于已知循环次数的循环,比while可读性高。
  • for循环省略表达式2,死循环;省略表达式1、3,完全等同于while
  • 如果压行导致for循环没有任何语句序列需要写了,那么for的结尾加个分号,建议换行写成空语句形式,易于理解。
  • break;只会跳出最近的一层循环/switch。所以说如果想要灵活的跳,就要使用goto语句。
  • continue;放在switch里会报错。