今天要复习的是第二讲C语言的数据类型和变量!这一部分不难,但是是基础中的基础很重要!!那让我们开始吧!!!
一.数据类型:
话不多说,看图:
Part1 数据类型
1.内置类型:
- 字符:C语言中,字符数据类型被称为char。char类型用于表示一个单个字符,它占用1个字节(8位)的存储空间。可以使用单引号来表示一个字符,如'a'或'X'。
- 整型:我们通常知道int是C语言中的整型,但是还有short,long,long long...在使用整型变量时,我们会进行常见的算术运算(例如加法、减法、乘法和除法),并且可以使用各种控制结构来对整型变量进行操作。
- 浮点型:在C语言中,浮点型(Floating-Point Type)用来表示带有小数部分的数值。C语言提供了三种浮点型:float、double和long double。
举个代码的示例:
#include <stdio.h>
int main() {
float number1 = 3.14f;
double number2 = 2.718;
long double number3 = 1.414L;
printf("Float number: %f\n", number1);
printf("Double number: %lf\n", number2);
printf("Long Double number: %Lf\n", number3);
return 0;
}
- 布尔类型:简单一句话就是,整数0表示假,非零值表示真。且他包含的头文件是<stdbool.h>,取值为true or false
2.自定义类型(这一部分先简单了解一下,过几天会深入学习的)
数组:
在C语言中,数组是一组相同类型的元素的集合。数组中的每个元素都有一个唯一的索引,从0开始递增。
要声明一个数组,可以使用以下语法:
type name[size];
其中,type
表示数组中元素的类型,name
表示数组的名称,size
表示数组的大小。
例如,声明一个整数数组可以这样写:
int numbers[5];
意思是声明了一个名为numbers
的整数数组,它可以存储5个整数。
结构体:结构体(Struct)是一种在编程语言中用于定义自定义数据类型的机制。它是由多个不同类型的成员变量组成的数据结构。
枚举:是一种用于定义命名常量的数据类型。枚举可以被视为一组相关的常量,这些常量可以在程序中被使用。
联合体:是一种特殊的数据结构,它允许不同类型的成员共享同一块内存空间。在C语言中,可以使用联合体来创建这样的数据结构。
下面有一个代码帮助我们简单理解一下:
#include <stdio.h>
// 定义一个联合体
union MyUnion {
int i;
float f;
char c;
};
int main() {
// 声明一个联合体变量
union MyUnion u;
// 修改联合体的不同成员
u.i = 42;
printf("Int value: %d\n", u.i);
u.f = 3.14;
printf("Float value: %f\n", u.f);
u.c = 'A';
printf("Char value: %c\n", u.c);
// 联合体共享内存,只能同时保存一个成员的值
printf("Int value: %d\n", u.i);
printf("Float value: %f\n", u.f);
printf("Char value: %c\n", u.c);
return 0;
}
猜一猜运行的结果是什么?
答案是:
Int value: 42
Float value: 3.140000
Char value: A
Int value: 65
Float value: 65.000000
Char value: A
联合体的各个成员共享同一块内存空间,因此在修改一个成员的值后,其他成员相应地也会被修改。 所以当我们修改了联合体的成员后,其他成员的值也发生了变化。那这主要是因为它们共享同一块内存空间。
Part2 变量
我们要介绍下面这张图上的内容:
-
变量的创建:
在C语言中,变量的创建包括两个步骤:
1.声明变量:在代码的适当位置,使用特定的语法声明变量的类型和名称。语法格式为 数据类型 变量名;
,例如:
int age;
float salary;
char initial;
上述代码分别声明了一个整型变量 age
,一个浮点型变量 salary
,一个字符型变量 initial
。
初始化变量(可选):在声明变量的同时,你还可以选择为变量赋予一个初始值。语法格式为 数据类型 变量名 = 初始值;
,例如:
int age = 25;
float salary = 5000.50;
char initial = 'J';
上述代码声明并初始化了三个变量,age
的初始值为 25, salary
的初始值为 5000.50, initial
的初始值为 'J'。
(变量的命名要遵循一定的规则,如只包含字母、数字和下划线,且不能以数字开头等。)
-
变量的分类:
-
全局变量(Global Variables):全局变量是在函数外部或者源文件的顶端定义的变量,它可以被程序中的所有函数访问。全局变量的作用域是整个程序。
-
局部变量(Local Variables):局部变量是在函数内部定义的变量,它的作用域被限制在所属的函数内部。局部变量只能在定义它的函数内部使用。
以一段代码为例:
#include<stdio.h>
int a = 2022;
int main() {
int b =2023;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
其中 int a 就是全局变量, int b 就是局部变量。
如果当局部变量和全局变量同名时,优先使用局部变量。
-
算术操作符:
C语言中常见的算术操作符包括:
加法操作符(+):用于将两个数相加。
减法操作符(-):用于将第二个数从第一个数中减去。
乘法操作符(*):用于将两个数相乘。
除法操作符(/):用于将第一个数除以第二个数。
取模操作符(%):用于计算两个数相除后的余数。
自增操作符(++):用于将变量的值增加1。
自减操作符(--):用于将变量的值减少1。
-
赋值操作符:
- 连续赋值:
在C语言中,连续赋值是一种将多个变量同时赋予不同的值的方式。
例如,假设我们有两个整数变量a和b,并且我们想要将a的值赋给b,同时将b的值加1。通过连续赋值,我们可以这样写:
b = a = 5; b++;
在这里,首先将a的值赋给b,因此a和b都被设置为5。然后,对于b的值执行自增操作,b的值变为6。
-
复合赋值符:
在C语言中,复合赋值符是一种结合了赋值操作和其他操作的简化语法。它可以同时对变量进行某种操作和赋值操作,以减少代码的书写。
以下是常见的C语言复合赋值符:
-
+=
这个符号表示加法赋值操作,即将右侧的操作数与左侧的变量相加,并将结果赋值给左侧的变量。例如:int a = 5; a += 3; // 相当于 a = a + 3; // 现在 a 的值为 8
-
-=
这个符号表示减法赋值操作,即将右侧的操作数从左侧的变量中减去,并将结果赋值给左侧的变量。例如:int a = 10; a -= 4; // 相当于 a = a - 4; // 现在 a 的值为 6
-
*=
这个符号表示乘法赋值操作,即将右侧的操作数与左侧的变量相乘,并将结果赋值给左侧的变量。例如:int a = 3; a *= 2; // 相当于 a = a * 2; // 现在 a 的值为 6
-
/=
这个符号表示除法赋值操作,即将左侧的变量除以右侧的操作数,并将结果赋值给左侧的变量。例如:int a = 10; a /= 5; // 相当于 a = a / 5; // 现在 a 的值为 2
-
%=
这个符号表示取模赋值操作,即将左侧的变量除以右侧的操作数得到余数,并将结果赋值给左侧的变量。例如:int a = 13; a %= 5; // 相当于 a = a % 5; // 现在 a 的值为 3
-
单目操作符:++,--,+,-
- 前置++、--:都是先+、-1,然后再使用
- 后置++、--:都是先使用,然后再+、-1
-
强制类型转换:
在C语言中,可以使用强制类型转换(也称为类型转换或类型转换运算符)将一个数据类型转换为另一个数据类型。强制类型转换的一般语法如下:
(type) expression
其中,type
是要将expression
强制转换为的目标数据类型。下面是一些示例:
将整数转换为浮点数:
int num = 10;
float result = (float) num;
将浮点数转换为整数:
float num = 3.14;
int result = (int) num;
将字符转换为整数:
char ch = 'A';
int result = (int) ch;
需要注意的是,类型转换应该谨慎使用,通常只有在必要的情况下才应该进行。