int x = 10, y = 3;
int z = (x + y) * 2; // 先算 x+y=13,再乘以2 → z=26
关系表达式(Relational Expression)
使用关系运算符 `< > <= >= == !=
c复制代码
int a = 5, b = 3;
int result = a > b; // 5>3 → 1(真)
逻辑表达式(Logical Expression)
使用逻辑运算符 && || !
c复制代码
int x = 5, y = 0;
int flag = (x > 0) && (y == 0); // 1 && 1 → 1(真)
位表达式(Bitwise Expression)
使用位运算符 & | ^ ~ << >>
c复制代码
int a = 5, b = 3;
int c = a ^ b; // 按位异或 → 6
/*解释:
a=5; 0101 5
b=3; 0011 3
c=a ^ b; 0110 6
*/
赋值表达式(Assignment Expression)
使用赋值运算符 = += -= *= /= ...
c复制代码
int a = 5;
a += 3; // a = a + 3 → a=8
条件表达式(三元表达式)
c复制代码
int a = 5, b = 10;
int max = (a > b) ? a : b; // max=10
4 控制结构与语句
4-1 顺序结构(Sequential Structure)
程序从上到下依次执行语句,这是最简单的控制结构
c复制代码
#include <stdio.h>
int main() {
int a = 5;
int b = 10;
int c = a + b; // 顺序执行
printf("c = %d\n", c);
return 0;
}
4-2 条件结构(Selection / Branching)
4-2-1 if 语句
c复制代码
int a = 0;
if (a > 0)
{
printf("a>0\n");
}else if (a < 0)
{
printf("a<0\n");
}else
{
printf("a=0\n");
}
4-2-2 switch 语句
在 C 语言里,switch 的表达式必须是整数类型或可以转换为整数类型。常用类型有:
类型
说明
int
最常用
char
字符型,可以使用 ASCII 码
short
短整型
enum
枚举类型,内部也是整数
long
长整型
c复制代码
#include <stdio.h>
enum Color { RED, GREEN, BLUE };
int main() {
char c = 'A';
switch(c) { // 可以用 char
case 'A': printf("A\n"); break;
case 'B': printf("B\n"); break;
}
enum Color color = GREEN;
switch(color) { // 可以用枚举
case RED: printf("红\n"); break;
case GREEN: printf("绿\n"); break;
case BLUE: printf("蓝\n"); break;
}
return 0;
}
同时要注意,case 标签对应的必须是常量
情况
可以用作 case?
说明
字面量 1、2、3
√
常量,编译时已确定
#define X 2
√
宏替换为常量,编译时已确定
enum { X=2 }
√
枚举常量
const int x = 2;
×
C语言中不是编译时常量,只是只读
普通变量 int x=2;
×
运行时值,不能用
注意每一个case语句要加上break防止穿透,但是有时故意省略 break 用于多 case 共用代码。
我们来看一个例子:
c复制代码
#include <stdio.h>
int main() {
int score = 85;
switch(score / 10) { // 按分数段判断
case 10: // 100 分
case 9: // 90~99 分
printf("优秀\n");
break;
case 8: // 80~89 分
case 7: // 70~79 分
printf("良好\n");
break;
case 6:
printf("及格\n");
break;
default:
printf("不及格\n");
}
return 0;
}
4-3 循环结构(Looping)
4-3-1 while 循环
特点:先判断条件,满足才执行循环体。
c复制代码
int i = 0;
while(i < 5) {
printf("i = %d\n", i);
i++;
}
4-3-2 do-while 循环
特点:先执行一次循环体,再判断条件,至少执行一次。
c复制代码
int i = 0;
do {
printf("i = %d\n", i);
i++;
} while(i < 5);