C语言基础讲解一
文章目录
- 1. 基本概念
- 1.1 数据类型
- 1.1.1 基本数据类型
- 1.1.2 枚举类型
- 1.1.3 指针类型
- 1.1.4 派生类型
- 1.2 变量
- 1.3 常量
- 总结
- 2. 操作符与表达式
- 2.1 算术操作符
- 2.2 关系操作符
- 2.3 逻辑操作符
- 2.4 位操作符
- 总结
1. 基本概念
在C语言中,基本概念涵盖了数据类型、变量和常量的定义和使用。让我们逐个详细讲解这部分的知识点:
1.1 数据类型
C语言中的数据类型可以分为基本数据类型、枚举类型、指针类型和派生类型。
1.1.1 基本数据类型
基本数据类型是C语言中最基础的数据表示形式,用于存储常见的数据。
-
int:整数类型,通常表示有符号整数。
int number = 10;
-
char:字符类型,用于存储单个字符。在内存中以ASCII码形式存储。
char letter = 'A';
-
float:单精度浮点数类型,用于存储小数,精度约为6位有效数字。
float pi = 3.14;
-
double:双精度浮点数类型,比float精度更高,精度约为15-16位有效数字。
double e = 2.71828;
1.1.2 枚举类型
枚举类型用于定义一组命名的整数常量。默认情况下,第一个枚举值的值为0,后续枚举值依次递增。
enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
enum Day today = Wednesday;
在上述示例中,Monday的值为0,Tuesday的值为1,以此类推。
1.1.3 指针类型
指针类型用于存储变量的内存地址,允许直接访问内存中的数据。
int *ptr; // 声明一个整型指针
int num = 20;
ptr = # // 将ptr指向num的地址
-
*ptr
:解引用操作符,用于获取指针指向的值。int value = *ptr; // value现在等于20
1.1.4 派生类型
派生类型包括数组、结构体、联合体和函数类型。
-
数组:一组相同类型的数据元素的集合。
int arr[5] = {1, 2, 3, 4, 5};
-
结构体:允许存储不同类型的数据项。
struct Point {int x;int y; }; struct Point p = {10, 20};
-
联合体:允许在相同的内存位置存储不同的数据类型。
union Data {int i;float f; }; union Data d; d.i = 10; // 或者 d.f = 3.14;
-
函数类型:用于声明函数返回值的类型。
int add(int a, int b) {return a + b; }
1.2 变量
变量用于存储数据,在使用前需要通过数据类型和标识符进行声明和定义。
int a = 10;
char c = 'A';
float f = 3.14;
-
声明:告诉编译器变量的名称和类型。
extern int x;
-
定义:为变量分配内存并指定初始值。
int x = 5;
1.3 常量
常量是固定的值,在程序执行过程中不会改变。使用const
关键字定义常量。
const int MAX = 100;
常量可以提高程序的可读性和维护性,因为它们的值在程序运行期间不能被改变。
总结
C语言中的基本概念包括数据类型、变量和常量。数据类型定义了变量可以存储的数据类型和范围。变量是程序中存储数据的容器,通过数据类型和标识符进行声明和定义。常量是不可改变的值,通过const
关键字定义。理解和掌握这些基本概念是学习和编写C语言程序的关键步骤。
2. 操作符与表达式
在C语言中,操作符用于执行各种操作,包括算术操作、关系操作、逻辑操作和位操作。让我们详细讲解每种类型的操作符及其用法。
2.1 算术操作符
算术操作符用于执行基本的数学运算,如加法、减法、乘法、除法和取余。
int a = 5, b = 2;
int sum = a + b; // 加法,sum的值为7
int diff = a - b; // 减法,diff的值为3
int prod = a * b; // 乘法,prod的值为10
int quotient = a / b; // 除法,quotient的值为2
int remainder = a % b; // 取余,remainder的值为1
- 注意:
- 整数除法会截断小数部分,结果为整数。
- 取余操作符(
%
)返回两个数相除的余数。
2.2 关系操作符
关系操作符用于比较两个值,并返回布尔值(1表示真,0表示假)。
int a = 5, b = 2;
int result = (a > b); // 大于,result的值为1
result = (a < b); // 小于,result的值为0
result = (a == b); // 等于,result的值为0
result = (a != b); // 不等于,result的值为1
result = (a >= b); // 大于等于,result的值为1
result = (a <= b); // 小于等于,result的值为0
- 注意:
==
和!=
是比较相等和不相等的操作符。- 关系操作符的结果是布尔值,可以用于控制流程中的条件判断。
2.3 逻辑操作符
逻辑操作符用于执行逻辑运算,如逻辑与、逻辑或和逻辑非。
int a = 1, b = 0;
int result = (a && b); // 逻辑与,result的值为0
result = (a || b); // 逻辑或,result的值为1
result = (!a); // 逻辑非,result的值为0(a为真,取非为假)
-
逻辑与 (
&&
):- 当且仅当两个操作数都为真时,结果为真;否则结果为假。
-
逻辑或 (
||
):- 当至少一个操作数为真时,结果为真;两个操作数都为假时,结果为假。
-
逻辑非 (
!
):- 如果操作数为真,则结果为假;如果操作数为假,则结果为真。
2.4 位操作符
位操作符用于对整数在二进制级别执行操作,如按位与、按位或、按位异或、按位取反、左移和右移。
int a = 5, b = 2;
int result = a & b; // 按位与,result的值为0
result = a | b; // 按位或,result的值为7
result = a ^ b; // 按位异或,result的值为7
result = ~a; // 按位取反,result的值为-6(取反后的补码)
result = a << 1; // 左移1位,result的值为10
result = a >> 1; // 右移1位,result的值为2
-
按位与 (
&
):- 对应位都为1时结果为1,否则为0。
-
按位或 (
|
):- 对应位有一个为1时结果为1,都为0时结果为0。
-
按位异或 (
^
):- 对应位不同时结果为1,相同时结果为0。
-
按位取反 (
~
):- 对操作数的每一位取反(0变为1,1变为0)。
-
左移 (
<<
):- 将操作数的所有位向左移动指定的位数,右侧空出的位用0填充。
-
右移 (
>>
):- 将操作数的所有位向右移动指定的位数,左侧空出的位用原来的符号位填充(算术右移)。
总结
操作符是C语言中非常重要的部分,通过使用这些操作符可以进行各种数学计算、逻辑判断和位级操作。理解这些操作符的使用和行为是编写高效和功能丰富的C语言程序的基础。