前言:
C语言的选择结构(if-else)和常量是编程中最基础也最重要的概念之一。本文将结合代码示例,带你系统掌握C语言中的常量类型、选择结构、关系与逻辑运算符,并通过多个实战案例巩固理解。
一、常量
C语言中的常量有多种定义方式,每种方式各有特点:
1. 字面常量
直接写在代码中的数值或字符,无需声明。
cs
// 整数字面常量
12, 23, 34
// 字符字面常量(单引号)
'A', 'b', '9'
// 字符串字面常量(双引号)
"hello world"
2. const 修饰的常量
将变量声明为只读,后续不能再赋值。
cs
const int a = 10;
// a = 20; // 编译错误,const 变量不可修改
3. #define 定义的标识符常量(宏常量)
预处理阶段进行文本替换,不占内存空间。
cs
#define MAX 100
// 使用 MAX 的地方会被替换为 100
4. 枚举常量
批量定义一组命名常量,默认从 0 开始递增。
cs
enum color {
red, // 0
blue, // 1
green // 2
};
注意事项:
- 使用
char类型时,单引号''引单个字符,双引号""引字符串。 - 如果在算术运算中两边的数据类型不同,则运算结果的数据类型与操作数中具有较大范围的操作数相同。
二、强制类型转换
当需要将一种数据类型转换为另一种时,可以使用强制类型转换。
格式 :目标变量 = (目标数据类型)(表达式)
cs
int c;
c = (int)(12.3 * 12 + 40); // 将浮点运算结果强制转换为整型
三、基础运算示例
功能:基础加法示例,演示变量定义、赋值和基本运算。
cs
#include <stdio.h>
int main()
{
int a, b;
a = 5;
b = 6;
int c;
c = a + b; // 给 c 赋值为 a + b == 给 c 赋值 5 + 6
printf("hello world!\n %d + %d = %d", a, b, c);
return 0;
}
功能 :输入输出加法示例,演示 scanf 读取用户输入。
cs
#include <stdio.h>
int main()
{
int a, b;
a = 5; // 赋值
b = 6;
printf("请输入两个数:");
scanf("%d %d", &a, &b); // 读取整型数字,并将值存储到变量 a 和 b 的地址中
int c;
c = a + b;
printf("结果是:%d + %d = %d", a, b, c);
return 0;
}
注意:判断结果返回非 0 为真,返回 0 为假。
四、选择结构之 if 语句
1. 单分支 if
当表达式为真时执行语句块,否则跳过。当语句块只有一句时可以省略 {}。
cs
if (表达式)
{
语句块;
}
// 或者(单行时可省略大括号)
if (表达式)
语句块;
2. 双分支 if-else
表达式为真执行语句块1,否则执行语句块2。
cs
if (表达式)
{
语句块1;
}
else
{
语句块2;
}
3. 多分支 if-else if-else
从上往下依次判断,一旦匹配成功就执行对应语句块,并跳过后续所有分支。
cs
if (表达式1)
{
语句块1;
}
else if (表达式2)
{
语句块2;
}
// ...
else if (表达式n)
{
语句块n;
}
else
{
语句块n+1; // 以上条件都不满足时执行
}
五、关系运算符
|-----|------|
| 运算符 | 含义 |
| == | 等于 |
| != | 不等于 |
| >= | 大于等于 |
| <= | 小于等于 |
| < | 小于 |
| > | 大于 |
六、逻辑运算符
| 运算符 | 含义 | 说明 |
|---|---|---|
&& |
逻辑与 | 两边都为非0结果才为1;短路特性:左边为0时右边不再计算 |
| ` | ` | |
! |
逻辑非 | 操作数为非0结果为0,操作数为0结果为1 |
七、实战代码示例
示例1:if-else 条件判断
功能:演示基本的条件分支结构,比较两个数的大小。
cs
#include <stdio.h>
int main()
{
int a, b;
a = 5;
b = 6;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
if (a >= b) // if 语句从上往下执行,当遇到符合条件的语句,将进入此语句,并且跳过之后的所有 else if 和 else 语句
{
printf("大的数是:%d", a);
}
else
{
printf("大的数是:%d", b);
}
return 0;
}
示例2:使用临时变量存储最大值
功能 :演示使用临时变量 max 来存储比较结果。
cs
#include <stdio.h>
int main()
{
int a, b;
a = 5; // 赋值
b = 6;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
int max = a; // 提前赋值,方便作比较
if (b > max) // 如果 b 比原先的 max 大,那 b 就是新的 max
{
max = b;
}
printf("大的数是:%d", max);
return 0;
}
示例3:数据类型演示
功能:展示 C 语言中不同数据类型的定义和使用。
cs
#include <stdio.h>
int main()
{
int a;
a = 2;
printf("%d \n", a);
char b; // char 类型本质属于整型大家庭,先有数字,再从 ASCII 表中查找相应的字符
b = '2'; // char 类型赋值 (字符,不是数字) 要打 '' 符号,否则打印数字
printf("%c \n", b); // 打印字符
float c; // 定义浮点型参数
c = 3.14f; // f 用于强调是 float 类型,以免 c 转换到 double 类型;float 与 double 区别在于 double 的范围更大
printf("%f \n", c);
double e;
e = 3.14;
printf("%lf \n", e); // double 相当于 long float
long long int num; // 定义长整型,与 int 相比,其范围更大
num = 2025233503401;
printf("%lld \n", num); // int 打印用 %d,long long int 打印用 %lld
return 0;
}
示例4:字符与 ASCII 码
功能:演示字符和数字之间的转换关系。
cs
#include <stdio.h>
int main()
{
char i;
i = 65;
printf("字母是:%c ,数字是:%d \n", i, i);
return 0;
}
示例5:三重判断(if-else if-else)
功能:演示多分支结构,比较两个数的大小关系。
cs
#include <stdio.h>
int main()
{
int i = 3, j = 4;
if (i > j) // 三重判断,从上往下依次判断
{
printf("大的数是 %d", i);
}
else if (j > i)
{
printf("大的数是 %d", j);
}
else
{
printf("两个数相等!");
}
return 0;
}
示例6:三个数找最大值(方法1:临时变量逐步比较)
功能 :使用临时变量 max 逐步与每个数比较,找出最大值。
cs
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int max = a;
if (a > max)
{
max = a;
}
if (b > max)
{
max = b;
}
if (c > max)
{
max = c;
}
printf("最大者是:%d", max);
return 0;
}
示例7:三个数找最大值(方法2:逻辑运算符直接比较)
功能 :使用 && 逻辑运算符直接判断每个数是否为最大值。
cs
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a >= b && a >= c) // && 操作符要求两边同时为真,才表示真,否则为假;从左往右依次判断,一旦左边判断错误,右边将不再进行判断
{
printf("最大者是:%d", a);
}
else if (b >= a && b >= c)
{
printf("最大者是:%d", b);
}
else if (c >= a && c >= b)
{
printf("最大者是:%d", c);
}
return 0;
}
示例8:大小写转换
功能:演示利用 ASCII 码差值实现字符大小写互转。
cs
#include <stdio.h>
int main()
{
char i;
scanf("%c", &i);
if (i >= 'a' && i <= 'z')
{
// 小写转大写,大写 ASCII 码表 (65~90),小写 ASCII 码表 (97~122)
printf("%c", i - ('a' - 'A'));
}
else if (i >= 'A' && i <= 'Z')
{
// 大写转小写
printf("%c", i + ('a' - 'A'));
}
else
{
printf("%c", i);
}
return 0;
}
总结
本文系统梳理了C语言中的核心基础知识点:
- 常量:字面常量、const常量、宏常量、枚举常量四种方式各有适用场景。
- 选择结构:if、if-else、if-else if-else 三种分支形式,灵活应对不同判断需求。
- 运算符:关系运算符返回 0/1,逻辑运算符具备短路特性,理解它们对写出高效代码至关重要。
- ASCII 码:字符本质是整数,掌握 ASCII 码规律可以轻松实现大小写转换等操作。
学习建议:多动手敲代码,尝试修改示例中的条件和数值,观察输出变化,加深理解!