语句
所有的C语言程序代码无一例外都是由一行行的语句(statement)所构成的。
这些语句是程序执行的操作命令,亦是程序代码的最小单位。
语句分为下面的多个类型:
表达式语句
下面会说到表达式,不要着急
这是最简单的语句,就是由一个表达式和结尾的分号组成,例如:
x = 10;//这就是表达式语句
y = x + 5;//这是另一个表达式语句,是不是和数学里的方程式很像
复合语句(块)
下面也会说到语句块(复合语句)
复合语句(语句块)是用{}花括号包围起来的一系列声明和语句,例如:
{
int x = 10;//这是声明语句,声明x是整型变量并将10赋值给x这个整型变量
y = x + 5;//这是表达式语句
}
选择(条件)语句
包括if语句、else语句和switch语句,基本用于进行不同条件分支的代码块,例如:
if(x > 0){
//如果x > 0就执行这个代码块
}
else{
//x不大于0的时候就执行这个代码块
}
switch(x){
case 1;
//如果x=1的时候则执行这个代码块
break;
case 2;
//如果x=2的时候则执行这个代码块
break;
default:
//如果x即不等于1,又不等于2的时候,则执行这个代码
}
控制(循环)语句
包括for语句、while语句和do-while语句,多数用于重复执行代码块,例如:
for(int x = 0; x < 100; x++;){
//这里是循环体,只要x小于100就会一直执行,每执行一次就x就会加1,一直到x不小于100为止
}
//另一种控制(循环)语句
int x = 0;
while(x < 10){
x++;
}
跳转语句
包括goto语句、continue语句和break语句,用于控制程序的执行流程,例如:
goto label;//无条件跳转到标签处
for(int x =0; x < 10; x++;){
if(x == 5)continue;//跳转到当前控制的剩余部分
//其他代码
}
while(x > 0){
if(x == 5)break;//退出循环
//其他代码
}
返回语句
用在函数中,用来返回函数的结果,例如:
return 0;//从函数中返回0
C语言里规定,语句必须使用分号来进行结尾,一个语句配一个分号,除非有明确的规定那可以不用上分号,就比如语句块外面的{}花括号就不用加分号。
这多条语句可以写在同一行上面,只要不要忘记加上分号就行,当然,单条语句也是可以分开写在多行上面,一个分号单独一行那也是有效语句,虽然没有意义就是了。
int x = 1;//单行单条语句
int x; x = 1;//这是单行多条语句
//这是多行单条语句
int
x
=
1
;
x = 1//这不是语句,这是表达式
空格
C语言程序代码里的空格即可以帮助编译器区分语法单位,又可以帮助程序员增加代码的可阅读性,更可以用来表示代码的缩进。
int x = 1;
//等同于
int x=1;
只要编译器自己有办法区分语法单位的话,那空格就不是必须的了。
int x = 1;
//等同于
int x = 1;
语法单位间的多个空格,不管你是多少个空格,通通都等同于单个空格。
int main()
{
//代码缩进
printf("Hello,world!\n");
return 0;
}
C语言里,大多数的代码风格都要求下一级的代码上一级代码多缩进四个空格。
只有空格的行,被称为空白行,编译器会自行忽略掉空白行。
注释
注释是对代码的说明,解释一下写的这段代码是什么作用或是为什么这里的代码要这么写等等,编译器都会自动忽略掉注释的内容。
C语言里代码的注释方法有单行注释和多行注释两种,具体请看下面的代码片段:
//这是单行注释
/*
这
是
多
行
注
释
*/
// 单行注释可以插入行首、行尾。
//注释可以在这里
printf("Hello,world!\n");//注释也可以这里
//注释还可以在这里
/**/多行注释可以插入在代码的中间。
int main(v/*io*/d)
不过请注意,不管是单行注释还是多行注释,请一定!一定!!一定!!!不要把注释放在双引号里。
一旦将注释放在了双引号里,就会成为字符串,从而失去注释的作用。
编译器在编译时,会将注释替换为空格,并不会将注释的内容给显示出来。
标识符
标识符顾名思义就是用来标识变量、函数以及其他任何程序员自定义项目的名称。
简单的说就是变量的名字、函数的名字、其他自定义项目的名字。
int x;//x是个还未赋值的变量,也是变量标识符
int ABC()//这是个函数,ABC是函数标识符
标识符的名称不是顺便乱取的,它是有一套规则的。
- 以二十六个大小写字母或是下划线_开头。
- 后面跟0零个或多个字母、下划线_或数字(跟不跟都可以)。
- 不要出现标点符号,如@、¥、%等。
- 注意区分大小写,如ABC和aBC是两个不同的标识符。
关键字
C语言里,用于特定目的的预定义保留单词。
跟标识符一样,它们两个用的是同一套的取名规则。
不过要注意的是,不能把关键字用做变量名、函数名以及任何标识符的名称。
下面列出一些关键字:
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
语句块
C语言里允许多个语句用{}花括号包围的形式组成语句块。
语句块也称为复合语句(compounded statement)。
{}花括号后面不需要分号结尾,这是C语言里允许不加上分号的一种情况。
int main()
{
这里就是用来写语句块的
}
表达式
表达式(expression)就是用来获取值的计算式,C语言里各种各样的主要就是通过表达式来完成的。
表达式是可以加上分号的,不过那样做没有意义。
2 + 2//这是一个简单的表达式,用来获取2+2的值
8//这也是一个表达式
表达式和语句的区别就两点:
- 语句可以包含表达式,不过表达式的本身是不构成语句的
- 表达式一定有返回值,语句却不一定有返回值。