整理编辑:编程小哥巴克Buck
C语言
1.基本数据类型、运算符、表达式
2.常用输入输出
3.流程控制
4.数组
5.指针
6.函数
7.构造数据类型
8.指针高级
9.函数高级
10.内存管理
1.基本数据类型
1.1整数类型(0正1负)
所有整数类型都分为:有符号类型(signed)和无符号类型(unsigned)
short a; //默认为有符号类型
short a; == signed short a;
unsigned short a; //无符号类型a
unsigned short a = -10;//错误
unsigned short a = 20;//正确
short: 类型名 所占内存空间大小 值域范围
短整形 2字节 unsigned short 0 - 2^16-1 (65535)
signed short -2^15 - 2^15-1(32767)
int: 类型名 所占内存空间大小 值域范围
整形 4字节 unsigned int 0 - 2^32 -1
signed int -2^31 - 2^31 -1
long: 类型名 所占内存空间大小 值域范围:
长整型 4字节 unsigned long 0 - 2^32 -1
signed long -2^31 - 2^31 -1
char: 类型名 所占内存空间大小 值域范围:
字符型 1个字节 unsigned char: 0 - 255
signed char: -128 - 127
char ch = 'A';
ASCII码表:编码标准 字符 -> 数字
(long long int是8字节)
后面的ull只是表示数据类型,并不是字符ull
字符型:
0 - 31 无法在终端上显示
32 - 127 可以在终端上显示
char类型其实仍然为int类型,因为字符对应的ASCII码仍然是数字
char ch = 27;
printf("%c", ch); 会显示乱码
'0' 字符
0 整形
char ch = '0'; ch:0011 0000 %c:显示字符0
char ch = 0; ch:0000 0000 %c:无任何显示
'\0' 0
'0' 48
'A' 65
'a' 97
练习:
将一个字母的大写形式变为小写形式
类型的扩展与截断:
扩展:低长度数据类型赋值给高长度类型需扩展
无符号类型:高位扩0
有符号类型:高位扩符号位(正数扩0 负数扩1)
截断:高长度数据类型赋值给低长度数据类型需截断
有符号、无符号:直接获取对应低位数据
char ch = 555;
printf("ch = %d\n", ch);
(编译报错,char型的取值范围为-128~127,255超出范围)
类型转化问题解题思路:数 -> 内存二进制数 -> 打印的结果
1.2浮点数类型
浮点数类型都为有符号类型,没有无符号类型的概念
float 单精度浮点数类型(4字节)
double 双精度浮点数类型(8字节)
float a = 3.1415;
double b = 3;
printf("a = %f\n", a);
printf("a = %lf\n", b);
1.3缺省类型
void:用来修饰指针、函数参数、函数返回值等 表示类型缺省
void a; //错
1.4泊尔类型
bool a;(1字节)(bool类型即为逻辑类型,只有真和假两个值)
值域:true(1) false(0)
C语言中非0值表示逻辑真值, 0值表示逻辑假值
a = 3 > 5;
a为bool类型的话,a值此时为0;
bool a;
a = 5;
printf("a = %d\n", a);
a值此时为1
1.5类型转换
1.显式转化(强制类型转化)
float a = 3.1415
int b = 3;
int c = 0;
c = (int)a + b;
2.隐式转化
char、short -> int
int、long -> long
signed、unsigned -> unsigned
int、float -> double
float、double -> double
计算机五大基本部件:运算器、控制器、存储器、输入设备、输出设备。
复制代码