语句部分
语句很简单,do,do while ,while,if,for…
主要复习一下平时用的很少的switch
switch语句
switch( expression)
{
statement
}
注意点1:expression必须是整型,char是特殊的整型
尽管在switch语句体内只使用一条单一 的语 句也是合法的,但这样做显然毫无意义。
实际使用 :switch语句一般如下所示:
switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default: 语句n+1;
}
注意点2:这里是常量表达式!!也就是说他不能是任何的变量
语句的执行流程
switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default: 语句n+1;
}
1.首先计算expression的值
2.然后执行流转到语句列表中与case对应的expression值匹配的语句
3.从这条语句执行到整个列表结束,也就是最后一句语句,他们之间的所有语句都将被执行
但是我们可能只需要执行一句语句就够了怎么办?
break语句可以解决
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
…
case 常量表达式n: 语句n;break;
default: 语句n+1;
}
break之后我们就会跳出这个语句
default语句
如果我们的表达式的所有值和case的标签的值都不匹配怎么办?问题不大,所有的都被跳过而已
但是如果我们有了default,在所有情况都不符合的情况下我们会直接跳到这个语句执行,举一个例子(我们的default在中间)
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
…
default: 语句;
…
case 常量表达式n: 语句n;break;
}
我们会跳到default那里去,注意了,我们这句default后面并没有break,那么我们就会一直执行下去,知道最后或者直到遇到break!
问题来了,为什么下面这幅图上面default后面不需要break:
很简单,因为这个default在最后面,直接会退出语句
goto 暂且不说,在我们目前学习到的知识里面,能用goto的地方都能用其他语句表示,goto确实有很适合它的地方,但不是现在
普通操作符
##############################普通运算符################################
常用的操作符+,-,*,/,%
注意点1
我们的不同类型之间计算的时候我们的会进行类型转化,类型转化的规则是从低字节往高字节转化
char < short < int < long < float < double
注意点2
%符号对负数取余用的很少
我们来看看负数取余
结论,不论什么数取余,无论哪种情况,最后的结果的符号都与我们第一个数的符号相同,也就是说
我们可以先把所有的数字转化为整数取余后再来判断符号
位移运算(选看)
其他不常用运算符
逗号表达式我们都知道判断真假的时候我们只关心最后一个表达式的真假,前面的我们都不需要管
但是,前面的表达式可以影响最后一个表达式!
前面的第一个表达式进行了赋值操作,影响了最后一个表达式。