该系列为本人的学习笔记,主要由本人整理书写而成。部分内容来自教材、视频课程等,不能保证完全原创性。
萌新的学习笔记,写错了恳请斧正。
# 数据类型
数据类型分为内置类型和自定义类型
下面介绍部分内置类型 (更多的还没学)
- 方括号内的内容可省略
# 1 - 字符型
- [signed] char
- unsigned char
可以存一个字符
signed 代表有正负号区别,unsigned 反之
signed 可以省略,unsigned 不行
对于字符类型,signed 和 unsigned 基本没有区别
# 2 - 整型
短整型:
- [signed] short [int]
- unsigned short [int]
整型:
- [signed] int
- unsigned [int]
长整型:
- [signed] long [int]
- unsigned long [int]
更长整型 (C99 后):
- [signed] long long [int]
- unsigned long long [int]
可以存一个整数
(只考虑非负数的情况下一般 unsigned 的数据类型值域大一点)
(举个例子,short 从 - 32768~32767, 而 unsigned short 从 0~65535)
# 3 - 浮点型
- float
- double
- long double
可以存一个小数
# 4 - 布尔类型
- _Bool
用以表示真假,有俩个取值 true 和 false, 用以代替 1 和 0
使用布尔类型需要包含头文件 stdbool.h
# 各种数据类型的长度
可以用关键字 (也是操作符) sizeof 来计算各类型数据的长度
sizeof 输出单位是字节,其操作数可以是类型、变量、表达式
int a; | |
printf("%zd\n", sizeof(a)); | |
printf("%zd\n", sizeof a); | |
printf("%zd\n", sizeof(int)); | |
printf("%zd\n", sizeof(a + a)); |
sizeof 的操作数如果不是类型,可以省略掉括号
sizeof 后面的表达式不会真正参与计算,只是求数据长
因为 sizeof 返回的类型在不同的系统中,可能是 unsigned int、unsigned long 甚至 unsigned long long, 可能会导致程序换个电脑就出问题。所以 C 语言给 sizeof 的返回值单独设置了一个类型叫 size_t, 可以自己根据系统情况返回类型。而这时,其所对应的占位符应为 %zd
具体数据长度的规定被写在头文件 limits.h 和 float.h 中
# 变量
变量,顾名思义,能变的量,和常量相对
变量是可以我们自己创建的,格式如下:
datatype name | |
//datatype 用任意数据类型的名字替代 | |
//name 就是我们自己随便起的变量名,只要不是关键字就行 | |
// 比方说: | |
int a; |
如果变量在创建时就直接给一个值进去,就叫初始化:
int a = 1; | |
char b = 'z'; | |
double c = 3.14; |
变量分为局部变量和全局变量:
# 全局变量
全局变量就是在大括号外面定义的变量,在整个工程里都能用。
哪怕是同一个工程的不同源文件,也可以申请调用。
# 局部变量
局部变量就是在某个大括号内定义的变量,也只能在这个大括号内使用
# 当它们起冲突时...
当局部变量和全局变量一致,函数优先使用其所在大括号内的可用的局部变量
比如说:
#include <stdio.h> | |
int a = 1; // 全局变量 | |
int main() | |
{ | |
{ | |
int a = 114514; //printf 不可用的局部变量 | |
} | |
int a = 0; //printf 可用的局部变量 | |
printf("%d",a); // 输出 0 | |
return 0; | |
} |
# 它们在内存中的位置
内存分为堆区、栈区、静态区
全局变量放在内存的静态区
局部变量放在内存的栈区
堆区还没学到