C语言if,switch语句知识点汇总

C语言if,switch语句知识点汇总

if语句

格式:
if(表达式)
{
语句1;
语句2;

}
else if(表达式)
{
语句1;
语句2;

}

else
{
语句1;
语句2;

}

注意:①一个if…else…语句相当于三目操作符/条件操作符(exp1?exp2:exp3中,exp1为真则执行exp2,exp1为假,则执行exp3)
②当有多个语句的时候要打{},为保险起见即使只有一个语句也打上{}
③悬空语句,else采用就近原则,即与else靠的最近的if连用
④if (表达式①) ,else if(表达式②),else(表达式③)中,由于有else的出现,表达式①②③是互斥关系。例如年龄小于18为未成年,18~60为壮年,大于60为老年,这时表达式①为age<=18,表达式②为age<=60,表达式③为age>60,我们不必将表达式②写为18<age<=60。又见例题打印0到100中含有9的数字。

连用两个if,此时两个语句为并列关系用if ,else if 为互斥关系二者打印的元素不会重叠 注意:if(), else if ()不是严格意义上的“互斥” 。以该题为例,if (a / 10 == 9)会包含99, if (a % 10 == 9)中也会包含99,99被算了两次,导致100以内含有9的数字有20个。但是加上else之后,else if (a % 10 == 9)会去掉99,99只会被算一次,因此100以内含有9的数字有19个。

switch语句

switch 是多分支选择语句,而 if 语句只有两个分支可供选择。虽然可以用嵌套的if 语句来实现多分支选择,但那样的程序冗长难读。这是 switch 语句存在的理由。
格式:
switch(整形表达式)
{
case (整形常量表达式):
statement;
break;
case (整形常量表达式):
statement;
break;

case (整形常量表达式):
statement;
break;
default :
statement;

}

注意:①每个 case 语句的结尾不要忘了加 break,否则将导致多个分支重叠
(除非有意使多个分支重叠)
②switch表达式一定是整形类型,case+空格+整形常量表达式
③default 和 case 的位置可以互换,只是一般情况下将default放最后

分支语句中涉及的操作符

一、逻辑操作符 && || !
①!:真为1,假为0。而在C语言的其他地方,真为非零,假为零。
②&&:全真为真,一假则假,只要出现一假,则不需要对后面的表达式进判断。例如,在 A && B && C 中,若A!=0,B=0,则不需要判断C
③||:全假为假,一真为真,只要出现一真,则不需要对后面的表达式进判断。例如,在 A || B || C 中,若A!=0,则不需要判断B,C

关于短路的例题:短路a++ && ++b && d++中,a++先使用,a被赋值为0,为假,根据在&&中一假则假的判断,++b、d++不在进行判断和运算,结果为b=2,d=4
a++ || ++b || d++中,a++先使用,a被赋值为0,为假,根据在||中一真则真·的判断,仍需要对后面的表达式进行判断,++b先加一后使用则b=3,为真,则不需要对d++进行判断,结果为b=3,d=4

二、关系操作符 >、 <、>=、<=、==、!=
①< <= > >= 优先级:从左至右
== != 优先级:从左至右
但是在实际操作过程中,最好用括号确定表达式的操作顺序。
②区分==和=,前者是判断是否相等,后者是赋值操作符。
③关系操作符不可以连用,除非加上逻辑操作符
例如 if (a < b < c) //书写错误,实际表达的含义是if ( (a<b)<c )
正确的书写为 if ((a<b) && (b<c))

三、三目操作符/条件操作符
格式:(exp1?exp2:exp3)
其中,exp1为真则执行exp2,exp1为假,则执行exp3;一个三目操作符相当于一个if()else 语句

四、双目操作符/算术操作符
包括:+、-、*、/、%
注意:①a / b:a、b都为整形,则结果也为整形(商);若a、b中至少一个为浮点型,则结果为浮点型(小数)
②a % b的前提是a、b都为整形,结果是余数,对于负数求模时,结果的正负号取决于第一个运算数的正负号,在此第一个运算数为a

五、单目操作符
包括:++、- -、+(正号)、-(负号)
注意:①前置++,如++a表示先加一后使用;后置++,如a++表示先使用后加一。前置- -,后置- - 同理
②正号负号的使用参照负负得正,如- - 同时出现的时候,符号为正。
但是正负号的使用通常与printf()中限制占位符最小宽度一起使用,比如printf(“%5d\n”,“abh”)隐藏了正号表示右对齐;printf(“%-5d\n”,“abh”)则表示左对齐

六、赋值操作符
注意:①=是赋值操作符,==是关系操作符,二者不要混淆
②连续赋值最好不用,比如;a = b = c - 5
③复合赋值,包括:+=,-=,*=、/=、%=
例如a = a + 1 可以写为a += 1,a++, ++a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值