数据类型和进制间的转换

系列文章目录

第一章:数据和C


前言

本章将详细介绍两大数据类型:整数类型和浮点数类型。讲解这些数据类型是什么,如何去声明、使用,还会讲到常量和变量的区别。


一、错误与警告

错误:在输入程序时打错(比如少输入一个;或者是中文的;),那么运行的时候就会报错,不能进行 编译
警告:在我们输入正确无误的时候,编译器也会发生警告(比如:从double类型转化成float类型可能会数据丢失)。尽管会有警告,但是程序仍然可以编译,不会终止

二、变量与常量

代码如下(示例):

int num;
int i = 10 * num;

里面num是一个变量,它的值会随着程序往下面运行而发生改变
10则是一个常量,它是一个定值,不会随着程序运行而发生改变


三、基础关键字

一个字节等于八个比特位(也就是二进制位)

char占一个字节
short占的字节小于int就行,一般默认为占两个字节
int一般占4个字节
long占的字节大于int就行
long long占八个字节
float占四个字节
double占八个字节
signed表示有符号数,即正数、0、负数
unsigned表示无符号数,即0和正数,不表示负数
void表示“空” ,放在返回值位置表示函数执行完不返回任何值

void用法:

void swap(int a,int b)
{
	int c = a;
	a = b;
	b = c;
}

该函数只是交换a和b的值,不需要返回值

四、进制转换

为了方便大家能够更好的学习,这里就讲讲二进制、八进制、十进制以及十六进制的转换(进制转换原理都是相通的)

二进制逢二进一
八进制逢八进一
十进制逢十进一
十六进制逢十六进一

二进制:由两个数字组成,0和1
八进制:由八个数字组成,0,1,2,3,4,5,6,7
十进制:由十个数字组成,0,1,2,3,4,5,6,7,8,9(现实生活中用的最多)
十六进制:由八个数字组成,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(也可以是a,b,c,d,e,f)
注:十六进制的abcdef(ABCDEF)分别代表数字10,11,12,13,14,15

所有的进制同理

注意!注意!!注意!!!·:C语言程序里面求次方不能直接使用平方(^)符号,要引用pow函数,我们后面章节讲函数时会讲到pow函数,下面使用平方符号是为了便于讲解进制间的转换
先介绍最简单的二进制转换成十进制:
随便一个二进制数:101110
在这里插入图片描述

所有二进制数转化成十进制数都是按照上面步骤来的

二进制转八进制:三位二进制数为一组,小数点的最左边和最右边不够三位数可以补0

为什么是三位二进制数为一组呢? 因为三位二进制数最大值是111,转化之后表示数字7,刚好是一位八进制数最大值(比如:二进制数 1 101 111转换成的八进制位是157,下面会仔细解释),所以用3位二进制数为一组

二进制数:1101111
在这里插入图片描述
二进制转化十六进制与转化成八进制原理相同,只不过由八进制三位数一组变成了十六进制四位数一组,大家可以动手试试十六进制以及含有小数的二进制转换,看看答案是否与你心中所想的一样

当我们知道二进制与其他进制的转换时,其他进制间的相互转化也很简单,比如:八进制转化成十进制,如同二进制步骤一样。八进制数1507:7乘以8的0次方+0乘以8的1次方+5乘以8的2次方+1乘以8的3次方=839

进制间的转换要大家多动手才行,看不一定能够看的明白

五、整数与浮点数

整数不含小数点或者没有小数部分的数
浮点数有小数点的数就是浮点数,浮点数有很多种写法,这里介绍一种e计数法
大家都知道了浮点数的含义,比如3.14,2.0,532.666等都是浮点数然而除了这种写法还有其他的方法表示浮点数。
e计数法:532.666还可以写成5.32666E2或者5.32666e2,这里面E和e都是同样的效果,意义是10的次方,后面的数字2就是表示前面E或者e的多少次方,也就是说2是E或者e的指数
同理,2.0可以写成0.2E1或者0.2e1

六、int类型

前面我们讲过有关int类型的知识,现在我们来深入研究一下
int表示整型类型,在打印输出的时候要用到%d,%d作用就是打印出有符号十进制整型结果(有符号下面再详细介绍)

		//int的声明作用
int num//这里的num就被int声明成为了一个整型变量
		//num可以被赋值为11,22,但是不能被赋值为11.0,12.0,这样会报错
int num,sum;//这是同时声明两个整数变量,中间要逗号隔开

int num=10//这里就是一个初始化过程,把num这个整数变量初始化为整数10
int num,sum=10//这里只把后面的sum初始化为10,前面num没有被初始化,默认为0

unsigned int 和signed int分别表示无符号整型有符号整型,signed和unsigned可以加在所有数据类型前面,都是一样的原理,signed一般可以省略不写。使用unsigned就表示该数据类型不能改变为负数,只有0和正数。
short int 表示短整型,储存空间较小,常用于较小值的场所,方便节约空间
long int 表示长整型,储存空间较大,常用于较大值的场所
long long int 表示长长整型,储存空间更大,常用于更大值的场所
这些类型声明同理,输入数据类型后,输入变量名称,然后进行赋值。每种int类型有它不同的用途,都有存在的意义,比如:unsigned常用于计数,因为计数没有负数
这里不同类型打印的方法不同:

unsigned int%u
long int%ld
long long int%lld

同理

%lx打印long类型的十六进制格式整数
%llx打印long long类型十六进制格式 整数
%lo打印long类型的八进制格式 整数
%llo打印long long类型的八进制格式 整数

七、char类型

char是字符类型,上章讲了char和转义序列的重点内容,接下来进行补充说明
char+变量名+=+字母、数字,标点符号

char num = 'a'

这样就把num初始化成为了字符a
但是当打印的时候,如果用%d打印的话打印出的值是97,因为字符a在ASCLL表里面十进制对应的是97
另外,char在某些编译器可以用来处理小整数,前面可以加unsigned或者signed,但如果用char处理字符,则什么都不用加

八、float和double类型

这两个类型统称为浮点数类型,简称浮点型
浮点型的声明,初始化与上文的char和int类型一样,不过多了小数点罢了
上文介绍了e计数法,如果采用e计数法,那么就不能用%f和%lf来打印float和double类型了

float%f
double%lf
long float%

当double qwer = 3.14e19的时候
printf()打印时要用到%e,打印出的结果是3.14e+19,意思是3.14这个数小数点向右移动了19位

九、类型转换

当一个float型的变量num要与一个int型变量sum计算时怎么办呢?
我们可以这样做,在num前面加上(int),也就是变成了(int)num,这样num就被强制转换成为了整型。sum前面加上(float)变成了(float)sum,也就是把sum强制转换成为了浮点型,这样就可以将num和sum进行运算了

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值