数据类型

发布时间:2024年01月07日

数据类型的类型

1 基本数据类型:不可以再分解成其他类型了,是自我说明的

2 构造数据类型:一个构造类型的值可以分解成若干个成员或者元素,每个成员都是一个基本数据类型或者又是一个构造类型

例如:数组类型、结构体类型、共用体(联合体)类型

3指针类型:他的值是用来表示某个变量在存储器中的地址

4 空类型:再调用函数时,通常向调用者返回一个函数值,这个函数值具有一定的数据类型,应在函数定义及函数说明中给以说明,例如在前序中,写的int max(int a,int b);int类型就说明这个函数的返回值是整型量,其中特殊的是void,我们后续会介绍这个用法

常量和变量

我们基于基本数据类型,按照取值是否可改变又分为常量和变量两种

在程序执行过程中,值不发生改变的量成为常量,值可变的量称为变量

常量是可以不经过说明直接引用的,变量则必须先定义,后使用

常量和符号常量

符号常量:用标识符代表一个常量,符号常量比较特殊,他虽然是个常量,但是他需要先定义

符号常量在使用之前必须先定义,一般形式为:#define? ? ?(预处理指令)

那我们进一步思考一下,为什么要进行宏定义,如果我们从程序员角度来说的话,我们根据宏定义可以很快地明白这个程序写的什么意思,方便程序员理解这个代码,同时还可以做到一改全改,我们只需要修改PRICE后面的数值就可以了

综上得,1含义清楚,2能做到一改全改

变量

变量定义必须放在变量使用之前,一般放在函数体得开头,要区分变量名和变量值是两个不同的概念

整形数据

整形常量有八进制、十六进制和十进制三种

在程序中是根据前缀去区分的

补充:

内存中的二进制存储(一个字节byte=8位bit)

数值是以补码表示的;

正数的补码和原码相同;

负数的补码:将该数的绝对值 的二进制形式按位取反再加1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?例如:求-10的补码

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 10的原码:0000 1010

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?取反:? ? ? ? 1111 0101

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?再加1,得到-10的补码:11110110

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第一位是符号位,如果是0就代表是正数,是1代表是负数

整型变量

整形变量的分类(这里跟占多少个字节跟系统和编译器规定有关)

1? 基本型:类型说明符为int,在内存中占4个字节

2? 短整型:类型说明符为short int或者short,所占字节的取值范围均与基本型相同

3? 长整型:类型说明为long int或者long,在内存中占四个字节

4? 无符号型:类型说明为unsigned

代码1:

代码2:

我们知道short所表示的数很小,是有范围的,32767是0111? 1111? 1111,如果加1的话就成了1000? 0000? 0000是-32768

代码3:

这个例子想要说明的是不同类型的量可以参与运算并且相互赋值,其中类型转换是由编译系统自动完成,有关类型转换的规则将在以后介绍

实型数据

实型也称浮点型,只采用十进制(小数,指数)

实型变量分为:单精度(float),双精度(double)和长双精度(long double)

float也是有一定的承受限度,所以数不可以太大

补充:

1.0/3*3等于多少?

3/2呢?

1/3*3呢?

字符型数据

字符型包括字符常量和字符变量(char%c)

例如:‘a’,’b‘,’=‘,’+‘都是合法的字符常量

特点:

只能有单引号括起来;

只能是单个字符;

’5‘ 和 5 是不同的,’5‘是字符常量,不能参与运算

转义字符

小写字母换成大写字母

字符串常量和字符常量区别

1? 字符常量由单引号括起来,字符串常量由双引号括起来

2? 字符常量只能是单个字符,字符串常量则可以含一个或者多个字符

3? 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量

例如:char a=’a‘,但是不可以char? a=”a“;

各类数值型的数据之间的混合运算

一共分为两种方法,一种是自动转换,另一种是强制转换

自动转换

1? 要转换为同一个类型,例如外交官去翻译别国的语言

2? 转换按数据长度增加的方向进行,以保证精度不降低,例如int和long型,要将int转换成long型再进行运算

3? 所有浮点型运算都是以双精度进行,即使只含有float单精度运算的表达式,也要转换为double型

4? char和short参与的时候,要转换成int

5???在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分将四舍五入向前舍入

PI是实型,r和PI转换为double型,结果也是double型,由于s是整型,那么结果就是整型,所带来的代价就是丢失精度

强制类型转换

一般形式为:

(类型说明符)(表达式)

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型

例如:

(float)a? ? ?强制把a转换成实型

(int)(x+y)? 把x+y的结果转化为整型

特别强调一点,这里面的强行转换只会保留整数,而不是四舍五入

文章来源:https://blog.csdn.net/2301_81650162/article/details/135422772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。