- 分支语句
1)、if
① if(10 <= weight&&weight <80)/正确的方式/
//if(10<=weight<80) //同一优先级结合方向从左到右 10 <= 5 为假 =0 0<80;成立
建议:每次使用if判断多个条件时
不要使用连续的判断
多使用 && || 等逻辑运算符,避免出现编译不报告的错误
②在没有加花括号的情况下({}),if 默认只控制它后面的一条语句。
2)、if else嵌套
注意:else匹配离它最近的一个if(同级的时候,包含情况不可以)
总结:
①每一个else必定会有一个与其匹配的if否则编辑器会报错,但是if不一定会有与之对应的else,推荐多使用下面的if-else if- else 当能够找到匹配条件时,下方的else if 于else 就不再执行可以提升程序的效率。
②使用if 进行判断时,多为范围性的数值判断(即无法使用确定有限的数值来表示)
③使用 if –else if-else语句时 ,尽量将出现概率高的条件判断放在前面,可以提升系统的效率。
3)、if - else if - else
if(/* condition1 */)
{
/*code */
}
else if (/* condition2 */)
{
/*code */
}
else if (/* condition3 */)
{
/*code */
}
else
{
/*code */
}
4)、switch
int a = 4;
switch (a)
{
case 1: //a的值等于1,执行此case内容
printf("hello 1\n");
break;
case 2: //a的值等于2,执行此case的内容
printf("hello 2\n");
break;
default: //另外所有情况,执行这里
printf("哈哈哈我啥也不是\n");
break;
}
printf("end of switch\n");
注意:
- switch后面必须跟整型变量,不能是浮点型。
- 花括号问题 switch – case中 case后不需要加括号,匹配的是case的值
- case 后跟 常量 方便与变量进行精确比较
- break;跳出switch分支语句
总结:
1 switch多用来进行有限精确数值的判断,和跳转
2 找到对应的case值是程序对自动跳转到这里往下执行,如果不写
break,将会不断的向下执行程序,直到程序结束或者碰到break才结束。
3 使用switch语句时 ,尽量将出现概率高的数值判断放在前面,可以提升系统的效率。(千万不要忘记break的编写否则就会适得其反)
4使用switch - case 时,一旦遇到两个case匹配一个操作时,可以将两个case写在一起,中间不添加任何东西代码(遇到break才结束,否则一直向下执行),这样可以节省代码块的大小。
型如:
case10:
case9 :
。。。。。。
break;
5)、goto 直接跳转,会造成代码可读性差,一般不建议用
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a,ret,b;
ret = scanf ("%d",&a);
if (ret <= 0)
{
goto error; //注意这里的用法
}
ret = scanf ("%d",&b);
if (ret <= 0)
{
goto error;
}
printf("end of scanf\n");
//.......
//
return 0;
error:
printf("input error\n");
return -1;
注意:
① :goto 只找 标签(loop) 不管其他的,如果在goto前面不加上判断语句容易造成死循环(注意)//很少用goto来构成循环,没意思且可读性太差。
② : goto 比较经典的用法就是上面所举的例子加重的部分,用来进行出现错误时跳出函数。
- 循环语句
1)、do-while
do
{
/*code */
}while (/* condition */);
注意:
1、不管三七二十一,上来先执行循环体
2、先执行,再判断
define函数为什么用do-while(0)
1、先执行,再判断,保证代码执行一次
2、while(0)后面需要一个分号
2)、while
while (/* condition */)
{
/*code */
}
注意:先判断,再执行
3)、for
for (/* initialize */; /* condition */; /*loop */)
{
/*code */
}
注意:
1、先执行initialize,只执行一次,可以省略,但是分号不能丢
2、判断condition是否成立,如果成立执行code,如果不成立,结束
3、code执行完,执行loop
总结:
do-while(0)多用在宏定义等一些只需要执行一次的地方
While(1)多用来设置死循环
for(),多用来设置计次的循环
- 辅助语句
1、 break:
<1> 和switch一起使用。
<2>和循环语句一起使用,跳出本层循环。
2、continue
结束本次循环,继续程序,进入下一次循环。
3、return
<1>return 的返回值是可以自己定的,型如 1—成功 0----失败
<2>程序员约定俗称的 0—成功,-1-----失败
<3>函数结束,等后面学习函数之后,会更深刻的了解到函数的返回值(return),
<变量类型>
<函数名><函数的参数>
红色的可以为空 但是要用void 来标记
函数名必须要写
返回值需要根据函数名前的变量类型来返回,否则会报错
总结:
break :用于从循环体内跳出循环体,即提前结束循环。break只能用在循环语句和switch语句中。
continue :结束本次循环,接着判定下一次是否执行循环。
return :退出一个函数,或者获取函数的返回值。main函数的返回值传递给系统。
exit():结束一个进程,传入的参数完全由编程人员自己决定。(系统中默认正常执行的函数返回0)