数据类型----基本类型

数据类型的类型

数据类型----基本类型_第1张图片

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

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

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

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

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

常量和变量

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

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

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

常量和符号常量

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

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

数据类型----基本类型_第2张图片

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

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

变量

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

数据类型----基本类型_第3张图片

整形数据

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

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

数据类型----基本类型_第4张图片补充:

内存中的二进制存储(一个字节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:

数据类型----基本类型_第5张图片代码2:

数据类型----基本类型_第6张图片我们知道short所表示的数很小,是有范围的,32767是0111  1111  1111,如果加1的话就成了1000  0000  0000是-32768

代码3:

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

实型数据

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

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

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

补充:

1.0/3*3等于多少?

3/2呢?

1/3*3呢?

数据类型----基本类型_第8张图片

字符型数据

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

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

特点:

只能有单引号括起来;

只能是单个字符;

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

转义字符

数据类型----基本类型_第9张图片数据类型----基本类型_第10张图片小写字母换成大写字母

数据类型----基本类型_第11张图片字符串常量和字符常量区别

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

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

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

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

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

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

自动转换

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

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

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

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

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

数据类型----基本类型_第12张图片PI是实型,r和PI转换为double型,结果也是double型,由于s是整型,那么结果就是整型,所带来的代价就是丢失精度

强制类型转换

一般形式为:

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

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

例如:

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

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

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

数据类型----基本类型_第13张图片

你可能感兴趣的:(旧版C语言学习,C语言,数据类型)