C语言基础——数据类型

目录

前言

 1、计算机当中的数据存储

2、进制转换

 1、十进制和二进制的转换

2、十进制和八进制转换

3、十进制和十六进制转换

 3、数据类型

1、基本数据类型:

2、构造数据类型

3、常量

4、变量

 1、  变量的定义

2、变量的赋值与初始化

 3、变量的取值范围

总结 


前言

本文主要讲述C语言当中的基本数据类型,以及涉及到的常量,变量的相关知识

 1、计算机当中的数据存储

 在计算机当中,以二进制的方式存储数据,以1或者是0来存储

计算机中存储 1 或 0 用 位表示---bit(比特),一个bit中只能存储一个1或者一个0 , b表示

存储大小如下:

1byte = 8bit

1KB = 1024byte

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

2、进制转换

 由于计算机当中存储数据用二进制来存储数据,所以必定会涉及到进制的转换。

一个数值有多种表示类型:二进制,八进制,十进制,十六进制

存储数据:以二进制形式存储数据

二进制:逢二进一,一个位置只能显示0/1超过1就向高位进1

比如要表示2 : ======> 0b10 二进制数表示以 0b开头

十进制:逢十进一,一个位置只能出现0、1、2、3、4、5、6、7、8、9,超过则进位

如果要显示10====>1 0

八进制:逢八进一,一个位置只能显示0、1、2、3、4、5、6、7

如果要显示8 ======>0 10 八进制数表示 以 0开头

十六进制:逢十六进一,一个位置只能显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F (0~15)

如果要显示16 ======>0x 10 十六进制以0x开头

 1、十进制和二进制的转换

十进制转换二进制 :对十进制数循环除以2取余,直到结果等于0,倒叙取余数得到二进制

二进制转换十进制:对二进制数每一位都进行 数据 * 2^i i表示在二进制数中的位置(低位从0开始),进行相加

2、十进制和八进制转换

十进制转换八进制:十进制数循环除以8取余,直到商为 0 为止,逆序读取余数

八进制转换十进制:数据 * 8^i i位置,相加

3、十进制和十六进制转换

十进制转换十六进制:把十进制数循环除以十六,直到商为0,倒叙取余数

十六进制转换十进制:数据 * 16^i i位置,相加

 3、数据类型

1、基本数据类型:

 整数类型 可以表示一个整数

浮点数类型 可以表示一个小数

字符类型 可以表示一个ASCCI 字符

字符串 多个字符按顺序排列

2、构造数据类型

在基础数据类型上,有些信息表示不完全,通过基础的数据类型复合构成新的类型

结构体类型 ;联合体/共用体类型 ;枚举类型; 指针类型 ;数组类型;

3、常量

常量:不能被改变的值,固定的、确定的值

  • 整型常量:整数

         1 、 2 、 -1 、 120 以具体的数值表示

  • 浮点类型常量:小数

         3.14 、 1.234 、 -3.25

  • 字符类型常量:英文字符

       

 'a' 、 '1' 、 ' '(空格字符) 、 ',' 、 '\n'(换行字符)

 错误表示: 'ab' 、 ''

 字符通过单引号括起来的一个英文字符 
在C语言中 字符类型其实就是一种特殊的整数,通过一个特定的表来表示 字符与整数的对应关系
 如果要存储一个字符,根据表找到字符的对应关系,就存储对应的整数 
对于C语言使用的表:ascii码 表 终端输入:
 man ascii 
'0' - '9' :48 - 57
 'A' - 'Z':65 - 90 
'a' - 'z':97 - 122 
'\n' : ' ': 10 - 32 
字符 可以当作整数来进行使用运算 字符个数比较少,
在ascii码表中每个字符对应一个整数,最大的整数也比较小,存储字符占用的位数也会比较少
  • 字符串常量:多个字符按顺序排列

"abc" 、 "123" 、 "1" 、 "" 主要用双引号括起来的,就是字符串

4、变量

在程序中可以随时改变的值,就叫做变量

使用变量必须通过符号来表示

在使用符号表示变量时,需要对变量符号进行说明,代表在使用变量符号哪种类型的数据,需要有一个对应的变量类型

  1. 整数类型

    int                    整型          占用4个字节,32位  
    short int / short      短整型        占用2个字节,16位
    long int / long        长整型        32位操作系统:占用4个字节,64位操作系统:占用8个字节
    long long int / long long            占用8个字节  
  2. 浮点数类型

    float        单精度浮点类型        占用4个字节
    double       双精度浮点类型        占用8个字节
  3. 字符类型

char        字符类型            占1个字节

字符类型就是一个特殊的整型,一般整型占多个字节,字符类型占一个字节

 

 1、  变量的定义

1、变量的定义格式

格式:
    数据类型    变量名;   #用变量名定义一个 数据类型的 变量
    数据类型    变量名1 , 变量名2 .....;
    
在定义时,不能只写 数据类型,必须跟上符号标记(变量名),通过符号标记来表示数据

 2、标识符命名规则

  • 由字母、数字、下划线( _ )组成
  • 只能由字母或下划线开始,不能以数字开头(int 1_a 错误)
  • 严格区分大小写(int a 和 int A 是两个变量)
  • 不能与关键字重名(在C语言中,作为特定操作的单词符号,有特殊含义,用户定义的名字不能冲突)
  • 一般变量命名要让别人一眼能看出表示的意思,比如定义一个变量number,别人能看出表示数字的意思

2、变量的赋值与初始化

当变量申请时,其中存储的值是随机值,在使用变量之前,就需要对变量存储一个值

赋值操作:

初始化:申请(定义)变量的同时,进行赋值操作(赋初始值)

赋初值:先申请变量,之后的第一次赋值

注意:两种操作有不同的意思,要区分开,因为两个操作有先后顺序,不能混为一谈。

注意:使用 = 赋值符号 左右两边的类型必须一一匹配

 3、变量的取值范围

 在讲述变量的取值范围之前,要清楚计算机存储的数据是以二进制来存储数据类型,

在有符号数据中,最高位用来表示符号位,用0 表示正数,用1 表示负数

在计算机存储数据时,采用二进制补码方式存储数据

原码:
    直接把数值用二进制方式表示就叫做原码
    1 = 0 000 0001 正数原码
    -1 = 1 000 0001 负数原码

反码:
    正数的反码等于原码,负数的反码:符号位不变,其余所有位都取反(1变为0,0变为1)
    1 = 0 000 0001 正数原码
    -1 = 1 000 0001 负数原码
    1 = 0 000 0001 正数反码 == 原码
    -1 = 1 111 1110 负数反码

补码:
    数据在计算机中的存储方式,正数的补码等于原码,负数的补码:反码+1
     1 = 0 000 0001 正数反码 == 原码
    -1 = 1 111 1110 负数反码
     
     1 = 0 000 0001 正数补码
    -1 = 1 111 1111 负数补码 (-1 在计算机中的真正的存储形式) 

 并且在进行数据取值范围时,有有符号和无符号之分:

signed 修饰数据类型 , 表示数据是有符号的类型
有正负之分,变量中就可以存储正数,也可以存储负数,在数据类型大小中需要存储符号

默认情况,定义的变量都是有符号的,相当于 signed可以省略

int a = 10;
int b = -10;
signed int c = -2; ====等价于  int c = -2;


unsigned 修饰数据类型 , 表示数据是无符号的
只能存储正数,无法存储负数,在数据类型大小中不需要额外存储符号

unsigned int c = 10;//定义一个无符号整数 存储 10
unsigned int d = -1;//转换为 非常大 正数 

1、 char类型(1个字节)取值范围

unsigned char

 signed char

 

2、int类型取值范围

关键字 类型占用字节数取值范围
short int 短整型2-32768~32767(-2^15~2^15-1)
int整型4-2147483648~2147483647(-2^31~2^31-1)
long int 长整型4-2147483648~2147483647(-2^31~2^31-1)
unsigned short无符号短整型20~65535(0~2^16-1)
unsigned int 无符号整型4 0~4294967295(0~2^32-1)
unsigned long无符号长整型4 0~4294967295(0~2^32-1)

 

3、浮点类型取值范围

浮点数在内存中以二进制形式存储,分为 符号位 阶码与尾数三部分

浮点数的二进制表示:

整数部分按照除以2取余数,小数部分乘以2取整数

规定整数部分必须为1,进行转换指数

如:5.25 == 101.01 == 1.0101 * 2^2
存入 计算机:
阶码:2^2 ===> 2 + 127 = 129 存储
尾数:1.0101 去除整数1  0101 存储

在float:符号位1位,阶码8位,尾数23位

阶码8位,表示范围 0 ~ 255即 2^0 ~ 2^255次方,但是由于 在float类型中指数表示有负数,所以 取中间数127作为指数E的 0 值(即2^0),如果是负数阶码 127+(-x)(如:2^-3,则 127 - 3 = 124)存入阶码;如果是正数阶码 127+(x)存入阶码,来表示,之后使用会自动 - 127之后作为阶码

float类型的精度:小数点后6位

在double:符号位1位,阶码11位,尾数52位

double类型的精度:小数点后15位

举例说明:

-10.25

总结 

 本文主要介绍了C语言中的数据类型,变量的表示,常量的表示,以及各种变量的取值范围。

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值