C 语言的数据类型
类型分类:
C 语言提供丰富的数据类型,包括字符型(char、signed char、unsigned char)、整型(short、int、long 等多种,且各有 signed 和 unsigned 修饰形式) 、浮点型(float、double、long double)以及 C99 引入的布尔类型(_Bool )布尔类型的使⽤得包含头⽂件 <stdbool.h>布尔类型变量的取值是: true 或者 false。不同数据类型用于描述不同特征的数据,如整型描述整数,浮点型描述小数。
类型长度与 sizeof 操作符:
- 使用
sizeof
操作符可计算数据类型或变量的长度,单位为字节。其操作数可以是类型、变量或表达式,且表达式在计算时不真实参与运算。在 VS2022 X64 配置下,char
类型长度为 1 字节,int
为 4 字节等 。
变量
变量创建与初始化:
- 变量用于存储变化的值,创建时需指定数据类型和变量名,可进行初始化。如
int age = 18;
创建并初始化了一个整型变量age
。 变量分类:
- 分为全局变量(在大括号外部定义,作用域为整个工程)和局部变量(在大括号内部定义,作用域局限于所在局部范围) 。当局部变量和全局变量同名时,局部变量优先使用。例如:
#include <stdio.h>
int global = 2023;
int main() {
int local = 2018;
int global = 100; // 局部变量global,优先使用
printf("局部变量global: %d\n", global);
printf("全局变量global: %d\n", ::global);
return 0;
}
全局变量和局部变量在内存中存储在哪⾥呢?
内存中的三个区域:栈区、堆区、静态区。
1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是⽤来动态内存管理的
操作符
算术操作符:
包括
+
、-
、*
、/
、%
,用于基本的算术运算。整数除法会丢弃小数部分,%
只能用于整数求模运算 。例如:
#include <stdio.h>
int main() {
int a = 10, b = 3;
int sum = a + b;
int sub = a - b;
int mul = a * b;
int div1 = a / b;
int mod = a % b;
printf("和: %d\n", sum);
printf("差: %d\n", sub);
printf("积: %d\n", mul);
printf("商: %d\n", div1);
printf("余数: %d\n", mod);
return 0;
}
赋值操作符与复合赋值符:
- 赋值操作符
=
用于给变量赋值,也支持连续赋值,但不建议使用,因其不易理解。复合赋值符(如+=
、-=
等)简化了代码编写。例如:
#include <stdio.h>
int main() {
int a = 5;
// 普通赋值
a = a + 3;
// 复合赋值
a += 3;
printf("a的值: %d\n", a);
return 0;
}
单目操作符:
++
(前置和后置自增)、--
(前置和后置自减)、+
(正号)、-
(负号) 。前置操作符先进行运算再使用变量值,后置操作符先使用变量值再进行运算。例如:
#include <stdio.h>
int main() {
int a = 10, b, c;
b = ++a;
c = a++;
printf("前置自增后a: %d, b: %d\n", a, b);
printf("后置自增后a: %d, c: %d\n", a, c);
return 0;
}
数据类型的修饰与取值范围
signed 和 unsigned 修饰:
signed
表示类型带正负号,unsigned
表示类型只表示零和正整数。int
默认等同于signed int
,字符类型char
默认是否带正负号由系统决定 。- 取值范围:不同整型和浮点型数据类型有各自的取值范围,可通过
limits.h
和float.h
头文件查看。如 16 位signed short int
取值范围是 - 32768 ~ 32767,unsigned short int
是 0 ~ 65535 。
输入输出函数
printf 函数:
用于将文本输出到屏幕,可通过占位符定制输出格式。占位符与数据类型对应,如
%d
对应整数,%s
对应字符串等 。例如:#include <stdio.h> int main() { int num = 123; float f = 3.14f; char str[] = "Hello"; printf("整数: %d\n", num); printf("浮点数: %.2f\n", f); printf("字符串: %s\n", str); return 0; }
scanf 函数:
用于读取用户键盘输入,其语法与
printf
类似,通过占位符指定输入数据类型,变量前需加&
取地址符(指针变量除外)。例如:
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
printf("你输入的整数是: %d\n", num);
return 0;
}