前言: 大家好,我是良辰呀💞!继续给大家更新C语言初阶教程,今天带领大家深入了解各种C语言语句🍡,让大家对C语言有更深的理解。
🍬每敲一行代码,就离心的彼岸更近一些。🍾🍾🍾
🍓1、C语言语句
C语言有各种各样的语句,今天我们主要讲解一下下面这些语句,让大家深入了解C语言语法。 学会C语言语法,就如拥有了一把利剑,披荆斩棘,同时也是对C语言学习的一大进步。
- 输入输出语句
- return语句
- 表达式语句
- 选择语句
- 循环语句
- 跳转语句
- 空语句
- 复合语句
- 函数调用语句
🍓2、输入输出语句
C语言常见的输入输出语句有scanf和printf,为了便于理解,我们先讲解printf,再道scanf。那具体怎么用呢?我们细细道来!
🚀2.1 printf输出语句
printf函数用来显示字符串的内容,而且能在字符串中插入一定的数值。
说明:
- %d表示整型,age为参数,把初始化变量age引入到print中
- printf也可以引入常量。
int main()
{
printf("李四%d岁了",20);
return 0;
}
上面的例子很简单,我还是简单提及一下,下面带大家见识一个面试题🍡 为什么结果是这样呢?不解与疑惑映入眼帘。
我们学习编程要学会查资料,C语言可以查找网站cplusplus.com以及软件MSDN等。
- 从上面我们可以了解到printf也是具有返回值的,printf返回打印的字符数,如果发生错误返回负数。
- printf函数套用printf函数,从里到外依次脱,先打印520,520为三个数字,返回3,3为一个数字,返回1,所以依次打印的数字为52031。
资料中的英语其实并不难,不要被吓到了哦,如果刚开始有点不习惯,可以查字典,慢慢积累,谁都会经历一个习惯的过程。🍡
🚀2.2 scanf输入语句
scanf函数根据特定的格式进行输入操作,语法和printf函数本质上相同,但又有一些不同。
?2.2.1 scanf函数的陷阱
- 转换说明的数量是否与输入变量数量相匹配以及他们的类型是否匹配。
- 取地址符&对于scanf函数是相当重要的。
scanf语句无取地址符时就不能达到键盘输入目的。【scanf往往通过访问地址发挥作用】
?2.2.2 scanf函数的返回值
从这里我们可以了解到scanf函数也是有返回值的,它的返回值是输入数量的个数。
说明:ret1是输入一个数的返回值,结果为1。 ret2是输入两个数的返回值,结果为2。
🍓3、return语句
从字面上看return具有返回的意思,没错,它确实具有返回和结束的意思,那它一般该如何使用呢? 我们一起来瞧一瞧。
🚀3.1 没有返回值的return
该程序是打印数组内容,但是达到限制语句时,有return,直接结束函数,循环外边的语句也将不再执行。
🚀3.2 有返回值的return
main函数中调用一个add函数进行加法运算,add前面为int,表示返回一个整型,return a+b返回数值,返回的可以是变量,也可以是常量,但是一定要有值。return 0表示正常结束程序,一般而言main函数里面都要有。
🍓4、表达式语句
表达式是由运算符和运算对象组成,而表达式语句是指由表达式组成的语句,大多数语句以分号作为结束标志,但也有特例。也可以这么理解,表达式语句一般都有结果。
int a=10,b=20,c=0;
c=a+b;
🍓5、选择语句(分支语句)
常见的选择语句有if语句和switch语句,选择语句,顾名思义,通过某个条件才能执行某个语句。
🚀5.1 if语句
语法格式:
- if(表达式)
语句; - if(表达式)
语句1; else 语句2; //多分支 - if(表达式1)
语句1; else if(表达式2) 语句2; else 语句3
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年人\n");
}
}
代码1为单if语句,符合if条件执行if代码块里面的语句。
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
}
代码2为if和else结合的条件语句,符合if执行if代码块的语句,否则,执行else代码块里面的语句。
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age>=18 && age<30)
{
printf("青年\n");
}
else if(age>=30 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
代码3为if,else if,else结合的语句,只能执行其中的一块代码。
总结: 如果表达式的结果为真,则语句执行。 在C语言中如何表示真假? 0表示假,非0表示真。
🚀5.2 if与else的匹配
如果没有相应的括号结合,而且格式没有对齐,你知道else和哪一个if结合使用嘛?
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("123\n");
}
}
else
{
printf("321\n");
}
return 0;
}
适当的使用{}可以使代码的逻辑更加清楚,写代码要有好的格式与风格。 else是和它离的最近的if匹配的。
🚀5.3 switch语句
switch语句中只有结合break才能事先真正的分支。拥有break,符合每一个case就会执行相应的case语句。
int main()
{
int input = 0;
scanf("%d", &input);
switch(input)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
default:
printf("输入有误\n");
break;
}
return 0;
}
上面就是一种switch选择语句, 语法结构: switch(表达式) { case 常量表达式: 语句; case 常量表达式:语句; … default:语句; } switch注意的问题:
- switch括号里面只能放整型表达式。5+10也是常量表达式。
- break语句不能丢掉,如果丢掉了好几个case语句都将执行
- 不允许有重复的case语句,但是各个case以及default语句的顺序没有要求(default也可以放在case语句前面,但一般不这么做。)
如果表达的值与所有的case标签的值都不匹配怎么办? 那就引入了其它情况,在switch语句里面,其它情况用关键词default。 default关键词:
- 可以写在任何一个 case 标签可以出现的位置。
- 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。因此,每个switch语句中只能出现一条default子句。
- default可以出现在语句列表的任何位置。
🍓6、循环语句
很多时候我们想让一件事情执行很多次,这次我们就用到了我们的循环语句,我们常见的循环语句有以下几种,让我们慢慢了解。
🚀6.1 while
先判断控制表达式,才开始执行循环体,表达式为假时,循环结束。 while(表达式) 语句
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
当表达式控制语句没有限制时,将进入死循环。 控制条件为1时永远为真。 Sleep是为了看的更清楚,每秒执行一个循环。
🚀6.2 for
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
注意: 初始化语句只执行一次,然后进行判断,再执行循环体,最后执行调整部分。
🚀6.3 do…while
先执行一次循环体,再进行控制语句判断。 特点:至少执行一次循环。
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i=i+1;
}while(i<=10);
return 0;
}
🍓7、跳转语句
🚀7.1 break语句
前面我们已经见到break语句在switch语句里面的用法,但在上面没有细讲,接下来我们就来细品一下break。
大家会发现,break具有跳出循环的功能,但是break只能跳出本次循环,如果多个循环嵌套,它只跳出它所在的循环范围
🚀7.2 continue语句
continue和break不同,continue会结束本次循环,并且满足条件的continue后面的代码将不再执行,但是循环并不会结束。
🚀7.3 goto语句
break和continue都是跳转语句,但他们的跳转往往需要条件约束,而goto语句就比较高大上了,它可以跳转到任何地方,但是一般不常用。
ben是定义的一个标识符【goto语句直接可以跳转的地方】,goto语句的出现解决了很多问题,但是一般不用,多个goto语句跳来跳去,可能会导致一些不必要的麻烦。
🍓8.空语句
简而言之,空语句就是除了分号,没有任何表达式的语句。
🚀8.1 省略了初始化语句的空语句
🚀8.2 省略了控制语句就会进入死循环。
🚀8.3 while循环里面的空语句
++n为先++再使用,n为6时跳出while循环
🍓9.复合语句
复合语句其实很简单,只是大家或许没听过这个概念,简单给大家讲一下。 复合语句(语句块),把多条简单语句融合在一起,一般用大括号括在一起结合起来的语句叫做复合语句。 { 表达式1; 表达式2; … }
🚀9.1 通过代码了解语句块
语句块里面的代码只能在该语句块使用。
出了该语句块,它将不复存在
上面的变量n定义在另一个代码块中,printf调用n时会报错未定义。
🚀9.2 static修饰的语句块
根据结果大家可以看出来,static可以让语句块里面的声明周期变长,直到程序结束,static修饰的变量才进行释放空间。
🚀9.3 static修饰的变量
注意: static修饰变量是让变量的声明周期变长,但是没有提高变量的作用域,声明周期和作用域的概念大家一定不能混淆,因此呢,上面的代码还会报错,出了块的作用域,块中的变量不能在其它块中使用。后续会有块的调用【特殊情况】
🍓10、函数调用语句
函数调用其实就是一个函数想实现某个功能,调用另一个函数。 好处是减少代码的冗余性,可以达到多次调用的效果,没有必要重新写功能块。 下面就是一个简单的函数加法调用,这次简单了解一下函数,后续我们会详解函数以及传参的。
尾序: 💝C语言各种语句已经讲解完,如果有问题,欢迎大家指教。我将再接再厉,努力成长,尽其所能更新好的文章。💦💦💦
|