前言
本篇主要讲解内置类,其他类型后面讲解
目录
前言
1. 数据类型
1. 1 整型
1. 2 浮点型
1. 3 字符型
1. 4 布尔型
2 signed和unsigned修饰符
3. 数据类型大小
3. 1 sizeof操作符
3 . 2 sizeof的返回值
4. 数据类型的表示范围
5. 变量
5. 1 变量的定义规则
5. 2 变量的分类
5. 3 类型转换
5. 3 .1 低精度转高精度
5. 3 .2 强制类型转换
1. 数据类型
在C语言中提供了各种数据类型来描述生活中的数据
如用整型描述整数,浮点描述小数,字符型描述字符
1. 1 整型
short //短整型
int //整型
long [int] //长整型
long long [int] //更长的整型
1. 2 浮点型
float //单精度浮点型
double //双精度浮点型
long double //长双精度浮点型
1. 3 字符型
char //字符型
1. 4 布尔型
C 语言原来并没有为布尔值单独设置⼀个类型,通常非零为真
在C99,才设布尔类型来表示真假(true和false)
_bool //布尔类型
2 signed和unsigned修饰符
当我没有用修饰符定义内置的数据类型,它默认是unsigned修饰符修饰
unsigned修饰的类型为有符号类型有正有负
signed修饰的类型为无符号类型只有正数和零
3. 数据类型大小
上诉数据类型如整型有short、int、long等,他们的大小不同,表示的范围也不同,我们可用sizeof
操作符,来求出它们的大小,单位字节
sizeof(char)//1
sizeof(_Bool)//1
sizeof(short)//2
sizeof(int)//4
sizeof(long)//4
sizeof(long long)//8
sizeof(float)//4
sizeof(double)//8
sizeof(long double)//在vs上是8,在gcc上测试是16
%zd 是C语言中的一种格式化输出符,用于输出带符号的整数类型变量
3. 1 sizeof操作符
sizeof
是⼀个关键字,也是操作符,它的返回值是字节
sizeof
后边的表达式是不真实参与运算的,根据表达式的类型来得出大小
sizeof的操作符的操作数可以是类型,也可是变量或者表达式。
sizeof操作数如果不是类型,是表达式的时候,可以省略掉后边的括号
sizeof的返回值是size_t类型
sizeof( 类型 )
sizeof 表达式

3 . 2 sizeof的返回值
对于sizeof的返回值,C语言只规定是无符号整数,并没有规定具体的类型,其类型留给系自己去决定,不同操作系统的可能类型不同,这样不利于程序的可移植性。C语言创造size_t来统一sizeof的返回值。

4. 数据类型的表示范围
由上知晓数据类型大小,它和数据类型的表示范围有者必然的关系。
数据在内存中以二进制存储。以int为例,int的大小是4个字节,1个字节等于8个比特位,每个比特位可以表示0和1,其它的最高位是符号位,0表示为正数,1表示负数,那么int的范围是2^31~2^31 – 1。以此可以推出其它数据类型的范围(浮点型除外,这里不解释)
5. 变量
C语言把经常变化的量称变量
5. 1 变量的定义规则
1.只能由字符(包括大写和小写)、数字和下划线(`_`)组成。
2. 不能以数字开头。
3.长度不能超过63个字符。
4.变量名中区分大小写的。
5. 变量名不能使⽤关键字。(如int,go..)
int a; //整型变量
char b; //字符变量
double c; //浮点型变量
在变量定义时个值叫做变量的初始化
int a = 1;
char b = "a";
double c = 1.2;
5. 2 变量的分类
变量分为全局变量和局部变量
#include <stdio.h>
int global = 2023;//全局变量
int main()
{
int local = 2018;//局部变量
return 0;
}
全局变量在静态区,局部变量在栈上,它们在内存的大致位置如下

5. 3 类型转换
5. 3 .1 低精度转高精度
低精度数据类型向高精度数据类型的转换通常是隐式的,由编译器自动完成,无需显式操作。这种转换不会导致数据丢失。如
char a = 12;
int b = a; //b = 12
5. 3 .2 强制类型转换
形如 (类型A)(变量名)= (类型A)(类型B数据)是强制类型转换。有时会丢失数据,如
浮点型转整型
double a = 1.22233;
int b = a; //直接截断小数部分。
//b为1;




