C语言学习Two
一、什么是控制语句
控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。C语言中共有9种控制语句,包括32个关键字,可以分为"选择语句“,”循环语句“,”转向语句“,”返回语句“四类。
(1). 条件判断语句 if语句、switch语句;
(2).循环执行语句 do while语句、while语句、for语句;
(3).转向语句 break语句、continue语句、return语句、goto语句。
二、条件判断语句
if-else
bool和条件符号
bool
bool flag=0;//可以把bool看作一个只有0和1两个值的数据类型
1.还可以接:true、false和其他非“0”值。
2.只有接:false和0表示:0,其他值其实都是:1
3.在输出时候使用“%d”即可。
条件符号
1.“==”:表示“等于”;
比如,表达式:
3= =3相当于一个值:1
4= =3相当于一个值:0
2.“>"、"<"、">="、"<=":和实际意义相同;
跟上一个一样,当判断成立的时候就表达:1;不成立就是:0
3."!":表示取非;
比如:
"!0"就表示:1;!(2= =3)也表示:1
"!false"也是1.
4.“&&“符号表示:并;”||“符号表示:或。
if-else语句讲解
在if中进行判断,如果,判断成立则执行if中的语句块;否则,执行else中的语句块。
注意:条件之间需要连接符号&&和||
比如:if(0<a<6){} s是错误的!,一定要表达为:if(0<a&&a<6)
代码格式
//代码不写全了,没有头文件和int main()主函数入口,之后也是
bool sign=0,flag=true,wrong=false;
if(!sign){
printf("这里会执行\n");
}
if(flag){
printf("这里会执行\n");
}
if(!wrong){
printf("%d\n",wrong);//这里会执行,且输出:0
}
if(!(3==4)){
printf("这里会执行");
}
执行结果:
这里会执行
这里会执行
0
这里会执行
备注:
if(判断){代码块}
else if(判断){代码块}
…
else if(判断){代码块}
else{代码块}
一次的判断每一个if/else if 的条件直到寻找到满足的执行,然后跳出整个判断。如果找不到就执行else的代码块。所有的else if或者else语句块可以没有。
switch-case
讲解
1.switch可以加数字、字符、常整型表达式;字符要加单引号。但是实际上:字符(按照ascii码表转换数字)、宏定义本质上都是以数字的形式去判断的。
注意:(以数字为例)
当某一个case语句后是该数字满足时将会执行case语句之后的所有语句,包括下一个case语句的内容和最后default语句的内容,除非使用break语句跳出整个switch语句。
2.break语句之后再讲,default是在case之后没有判断成立的数字时执行的语句,也可以不定义,但是习惯上最好加上。
代码格式
int sign=0,flag=2;
switch (flag)
{
case 2:
printf("这里会输出!\n");
case 3:
printf("因为没有break语句,这里也会输出!\n");
default:
printf("因为没有break语句,这里也会输出!\n");
}
switch (sign)
{
case 1:
//不满足,不会从这里执行
default:
printf("因为不存在满足的数字,所以执行default的内容!\n");
}
执行结果:
这里会输出!
因为没有break语句,这里也会输出!
因为没有break语句,这里也会输出!
因为不存在满足的数字,所以执行default的内容!
三、循环执行语句
do-while和while解释
while先判断条件是否为真(参考if语句),如果是真,则执行,每执行一次判断,直到不满足为止。
do-while语句先执行再判断,也就是至少执行一次。
代码格式
int flag1=0,flag2=0,flag3=0;
do{
printf("先执行DO中的内容!\n");
flag1=flag1+1;
}
while(flag1<3);
while(flag2<3){
printf("先判断后执行!\n");
flag2=flag2+1;
}
//就算不成立,也执行了一次
do{
printf("先执行DO中的内容!\n");
}
while(flag3==1);
执行结果:
先执行DO中的内容!
先执行DO中的内容!
先执行DO中的内容!
先判断后执行!
先判断后执行!
先判断后执行!
先执行DO中的内容!
for
for(表达式1;表达式2;表达式3)
表达式1:可以有0-n个,通常是定义一个常数作为循环次数
eg:int i=0;这个i只能在for语句块中使用。
表达式2:通常是一个判断语句(类比if语句的),先执行判断,如果判断成功,就执行,不成功则跳出for循环。
表达式3:可以有0-n个,通常是对判断的值进行改变,使得循环可以跳出。
代码格式
for( ; ;)
{
printf("123\n");
break;//为了避免一直打印123,跳出循环,之后会讲
}
int i=0;
for(int i=3;i<5;i++)
{
printf("%d\n",i);//打印出的值是for语句中的i值
}
printf("%d",i);
执行结果:
123
3
4
0
当第一个表达式没有定义的时候,也可以直接调用在for外面定义的变量。
四、转向语句
break与continue
break:结束当前的整个语句块并且跳出循环(如果存在的话)。
continue:结束当前的语句块,如果存在循环不会跳出,会开始进行下一次判断。
刚刚试了一下,在do-while语句中使用continue语句不会使得判断是否进行下一次执行该语句块的语句被跳过。说明:continue只是跳除了当前的代码块,对于代码块之后的所有内容不会产生影响,注意:两个语句都是对当前影响,对于层次的语句结构影响的效果,可以自行试一试。
int i=0;
do{
printf("12\n");
i++;
break;
}
while(i<5);
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
printf("%d内层\n",j);
break;//实际上只会输出一个
}
printf("%d外层\n",i);
continue;
printf("这一句不会输出\n");
}
执行结果:
12
0内层
0外层
0内层
1外层
0内层
2外层
0内层
3外层
return与goto
return:是指返回一个值,用于函数的退出返回一个返回值,之后函数会讲到。
注意:我们定义的int main()主函数也是需要一个“int”类型的返回值的,之前都没有加上。
goto:语句用来返回之前标记的位置。
int j=0;
loop:
j++;
printf("j:%d\n",j);
for(int i=0;i<=2;i++){
printf("%dfor循环\n",i);
}
if(j<2){
goto loop;
}
else{
goto end;
}
printf("不会输出!\n");
end:
printf("结束\n");
return 0;
j:1
0for循环
1for循环
2for循环
j:2
0for循环
1for循环
2for循环
结束
备注:
1.这里的loop和end就是一个标志,名字可以自己取。
2.goto语句容易造成语句的条理被打乱,当代码量很大的时候建议少使用。(其他博主那里看到的,我的代码量暂时还没有到达过。。。。)
五、写在最后
加一个exit()
exit(0);
表示退出程序,参数0表示正常退出,在任何地方使用会退出整个程序。
有关于进程、线程等等的相关知识可以看看《操作系统》。
结语
现在的内容对接触过的人都比较简单,哈哈,来得很快。但是之后事情比较多,之后肯定就慢下来了。如果有幸能和刚刚接触高级编程语言的同学一起学习,建议速度慢下来,稳扎稳打,自己多写写才是最重要的。