1.语句
在C语言中,语句是一组按照特定规则编写的代码,它们被用于执行特定的任务。每个语句通常以分号 (;) 结束。C语言中有多种类型的语句,包括以下几种最常见的:
-
表达式语句:最简单的语句类型之一,用于执行一个表达式,并丢弃其结果。例如:
x = 5;
代码会执行一个赋值操作,将5赋值给变量x。 -
控制流语句:用于控制程序的执行流程。常见的控制流语句包括条件语句(如if语句和switch语句)和循环语句(如for循环和while循环)。
-
跳转语句:用于在程序中跳转到指定的代码位置。C语言提供了三种跳转语句:break、continue和goto。
-
复合语句:也被称为代码块,用于将多个语句组合在一起,并将它们作为一个整体来执行。复合语句通常用花括号 ({}) 括起来。
-
空语句:也被称为空操作语句,它不执行任何操作,只是一个分号。空语句常常用于占位或在某些特定情况下使用。
这些语句可以根据程序的逻辑和需要来组合和嵌套,从而完成复杂的任务和控制程序的行为。
接下来介绍都是控制语句。
2.控制语句
控制语句用于控制程序的执行流程,已实现程序的各种结构方式,它们由特定的语句定义符组成,C语言由9种控制语句,可以分为以下三类:
(1)条件判断语句也叫分支语句:if语句、switch语句;
(2)循环执行语句:do while语句、while语句、for语句;
(3)转向语句:break语句、goto语句、continue语句、return语句。
3.if语句
用于根据条件选择是否执行一段代码。如果条件为真,则执行if后面的代码块;如果条件为假,则跳过if块的代码。语法如下:
if (condition) {
// 执行代码块
}
if-else语句:与if语句类似,但是在条件为假时会执行else后的代码块。语法如下:
if (condition) {
// 执行代码块1
} else {
// 执行代码块2
}
这里需要注意的是,一条if语句后只能跟随一条执行语句,如果有多条语句,需要放在大括号{}里,如果不加大括号,那么只有第一行代码会被视为if语句的一部分,而后面的代码则会按照顺序执行,而不受if语句的控制。这可能导致代码执行的结果与预期不符。另外,加上大括号可以更清晰地表达代码的逻辑结构,使代码更易于理解和调试。此外,如果后续需要在if语句中添加更多的代码,只需要在大括号内添加即可,而不需要再添加大括号本身。因此,为了代码的可靠性和可维护性,建议在if语句中始终加上大括号。
if-else的多分支语句:else可以有多个分支语句,如下所示:
int main()
{
int age = 28;
if (age < 18)
{
printf("未成年\n");
}
else if (age >= 18 && age < 28)
//这里需要注意一下&&的使用,表示“并且”,最好不要写成 18 <= age < 28
//这样写代码虽然运行不会报错,但是可能在有些软件上运行逻辑是不对的,当age = 10时,也会执行
//这条语句。因为当age = 10 >= 18为假即为0;而0 < 28为真,则会执行下面的语句
{
printf("青年\n");
}
else if(age >= 28 && age <40)
{
printf("中年\n");
}
return 0;
}
这里有一个需要注意的地方,我写在代码注释里了。
4.Switch语句
在C语言中,Switch语句用于根据一个表达式的值跳转到不同的执行路径。它的语法格式如下:
switch (expression) {
case value1:
// code block 1
break;
case value2:
// code block 2
break;
case value3:
// code block 3
break;
default:
// code block for default case
}
在这个语法中,expression是要进行判断的表达式,value1、value2、value3等是不同的取值。当expression的值与某个case后面的value值相匹配时,对应的代码块会被执行。如果没有匹配的case,就会执行default后面的代码块(可选)。
需要注意的是,在每个case后面的代码块执行完毕后,需要使用break语句来跳出switch语句,否则程序会继续执行后面的case代码块。另外,default语句是可选的,用于处理没有匹配的情况。
下面是一个示例:
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
default:
printf("Other\n");
}
return 0;
}
在上述示例中,变量day的值为3,与case 3匹配,因此执行相应的代码块,输出"Wednesday"。
除此之外,switch语句可以使用char类型的字符作为表达式进行判断。
下面是一个使用char类型的字符的示例代码:
#include <stdio.h>
int main() {
char grade = 'B';
switch (grade) {
case 'A':
printf("Excellent\n");
break;
case 'B':
printf("Good\n");
break;
case 'C':
printf("Average\n");
break;
default:
printf("Fail\n");
}
return 0;
}
在上述示例中,我们定义了一个字符型变量grade,并将其赋值为'B'。然后使用switch语句对grade进行判断。因为grade的值为'B',与case 'B'匹配,所以执行对应的代码块,输出"Good"。