【C语言基础】常量、选择结构与运算符全解析

前言:

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

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

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

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

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

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

int main()

{

char i;

i = 65;

printf("字母是:%c ,数字是:%d \n", i, i);

return 0;

}

示例5:三重判断(if-else if-else)

功能:演示多分支结构,比较两个数的大小关系。

cs

复制代码

#include

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

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

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

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 码规律可以轻松实现大小写转换等操作。

学习建议:多动手敲代码,尝试修改示例中的条件和数值,观察输出变化,加深理解!

Copyright © 2088 一键全脑游戏活动站 - 脑力挑战专属福利 All Rights Reserved.
友情链接