文章目录
前言
上一篇提示:
在上篇文章 C语言重要知识点总结【7】:C语言中的常量、变量、标识符 中主要介绍了以下3点内容:
常量的5种类型
:整型常量、实型常量、字符常量(转义字符)、字符串常量、符号常量。标识符
:由字母、数字和下画线 3种字符组成,且第一个字符必须是字母或下画线 。标识符分为3类:关键字(32个)、预定义标识符和用户标识符。变量的概念 和 常变量
:变量代表一个有名字
、具有特定属性
的一个存储单元。他用来存放数据,也就是存放变量的值。在对程序编译连接时有编译系统给每一个变量名分配一个 存储地址 。
本篇将对变量的基本数据类型进行详细讲解:
C语言要求在定义所有的变量时都要指定变量的类型
,常量有5种常见数据类型、而变量的数据类型则有很多,其中,整型数据、实型数据 和 浮点型数据 是最基本的数据类型。
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度
(占多少字节)以及数据的存储形式
(整型、实型、浮点型、数组类型、指针类型、结构体类型等),不同类型分配不同的长度。
类型 | 类型名 | 字节数 |
---|---|---|
short | 短整型 | 2 |
int | 整型 | 4 |
long | 长整型 | 4 |
long long | 双长整型 | 8 |
char | 字符型 | 1 |
float | 单精度浮点型 | 4 |
double | 双精度浮点型 | 8 |
一、整型数据
1. 基本整型(int)
编译系统分配int型数据2个字节或4个字节(由具体的C编译系统自行决定),如Turbo C 2.0为每一个 int 整型数据分配2个字节(16个二进制位),而Visual C++为每一个 int 整形数据分配4个字节(32位)。
整型数据在存储单元中的存储方式是:
- 用整数的补码(complement)形式存放
int a=5;
如果用2个字节存放这个整数,则在存储单元中的数据形式如下图:
原码 / 补码 | 字节 1 | 字节 2 |
---|---|---|
5的原码 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 0 1 |
5的补码 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 0 1 |
按位取反 | 1 1 1 1 1 1 1 1 | 1 1 1 1 1 0 1 0 |
-5 的补码 | 1 1 1 1 1 1 1 1 | 1 1 1 1 1 0 1 1 |
正整数
:正数的补码是此数的二进制形式,如5的二进制形式是101,如果用2个字节存放5这个整数,则在存储单元中的数据形式0
0 0 0 0 0 0 0 0 0 0 0 01 0 1
- 负整数:求负数的补码方法是,先将次此数的的 绝对值 写成二进制形式,然后对其所有的二进位 按位取反,再加1
- 最左边的一位数字表示
符号
,0
表示数值是正,1
表示该数值为负
2. 短整型(short int)
定义变量为短整型时 int 可省略不写
short a=666; //常用写法
short int a=666;
3. 长整型(long int)
定义变量为长整型时 int 可省略不写
long a=888; //常用写法
long int a=888;
4. 双长整型(long long int)
定义变量为双长整型时 int 可省略不写
long long a=999; //常用写法
long long int a=999;
- 关键字
signed
和unsigned
- signed:将变量定义为无符号类型,signed一般可省略不写
- unsigned:将变量定义为有符号类型,用 %u 输出
- 只有 整型数据 和 字符型数据 可以加 signed 或 unsigned 修饰符,实型数据不能加。
short a; //a为有符号短整型变量
unsigned short b; //b为无符号短整型变量
-
C标准没有规定各种数据类型所占用存储单元的长度,这是由各编译系统自行决定的。C标准只要求long型数据长度不短于int型,short型不长于int型。
5.字符型数据(char)
字符是按代码(整数)形式存储的,其实字符型数据是属于整型数据的一种。把字符型数据当作一种基本数据类型,因为字符型数据在使用上有自己的特点。
- 一个字符占一个字节
- 1B = 8bit
- 字节(Byte)、位(bit)
- 1位即一个二进制数 0 或 1
字符 与 字符代码
字符与字符代码并不是任意写一个,程序都能识别。例如
π
在程序中是不能识别的,只能使用系统中的字符集中的字符,目前大多数系统采用ASCll字符集。各种字符集(包括ASCll字符集)的基本集都包括了127个字符。其中常用的有:
字母
:大写英文字母 A ~ Z ,小写英文字母 a ~ z,各26个。数字
:0 ~ 9专门符号
:29个 包括!
"
#
&
'
(
)
*
+
-
,
/
.
:
;
<
=
>
?
[
\
]
^
_
{
|
}
~
`空格符
:空格、水平制表符(tab)、垂直制表符、换行(’\n’)、换页(’\f’)不能显示的字符
:空(null)字符(以’\0’表示)、警告(以’\a’表示)、退格(以’\b’)表示、回车(以’\r’表示)等
char c='?';
//定义a为字符变量,初值为字符'?'
//字符'?'对应的ASCll代码是63
printf("%c",c);
输出结果:?
printf("%d",c);
输出结果:63
二、浮点型数据
浮点型数据是用来表示有小数点的实数,为什们称实数为浮点数?在C语言中,因为一个实数表示为指数的形式不止有一种。
如 3.14159 X10的0次幂、0.314159 X 10的1次幂、0.0314159 X 10的2次幂……,由于小数点的位置可以浮动,所以实数的指数形式称为浮点型。
在浮点型数据类型 float、double 或 long double 中 小数部分 和 指数部分所占的字节数是由编译系统自定,不同编译系统对小数部分 和 指数部分分配的字节数可能会不一样。
1. 单精度浮点型(float)
2.双精度浮点型(double)
谭浩强《C程序设计》:
最后送给大家一张我制作了很久的图片:
总结
提示:
以上就是本篇要讲的内容,本文主要对最基本的3种数据类型 整型数据、字符型数据、浮点型数据 进行了介绍。对于数组、函数、指针、空类型、结构体类型、共用体类型 和 枚举类型会在以后的文章中单独进行讲解。
以上内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 加油!!!
如果你感觉我写的内容对你有一定的帮助,请给我点一个 【赞】作为您对我的鼓励, 谢谢!!