C语言重要知识点总结【8】:C语言中变量的数据类型
C语言重要知识点总结【8】:C语言中变量的数据类型
文章目录
- 前言- 一、整型数据-
- 1. 基本整型(int)- 2. 短整型(short int)- 3. 长整型(long int)- 4. 双长整型(long long int)- 5.字符型数据(char)- 1. 单精度浮点型(float)- 2.双精度浮点型(double)
前言
上一篇提示:
在上篇文章 [C语言重要知识点总结【7】:C语言中的常量、变量、标识符](https://blog.csdn.net/weixin_46022083/article/details/108118792) 中主要介绍了以下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` <img src="https://img-blog.csdnimg.cn/20200825223016630.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"> - `正整数`:正数的补码是此数的二进制形式,如5的二进制形式是101,如果用2个字节存放5这个整数,则在存储单元中的数据形式 `0` 0 0 0 0 0 0 0 0 0 0 0 0 `1 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;
<img src="https://img-blog.csdnimg.cn/20200825114903614.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"> 1. 关键字 `signed` 和 `unsigned`1. **signed**:将变量定义为无符号类型,signed一般可省略不写1. **unsigned**:将变量定义为有符号类型,用 %u 输出1. 只有 整型数据 和 字符型数据 可以加 signed 或 unsigned 修饰符,实型数据不能加。
short a; //a为有符号短整型变量
unsigned short b; //b为无符号短整型变量
<img src="https://img-blog.csdnimg.cn/20200825225039300.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"> > C标准没有规定各种数据类型所占用存储单元的长度,这是由各编译系统自行决定的。C标准只要求long型数据长度不短于int型,short型不长于int型。 ## 5.字符型数据(char) > 字符是按代码(整数)形式存储的,其实字符型数据是属于整型数据的一种。把字符型数据当作一种基本数据类型,因为字符型数据在使用上有自己的特点。 - 一个字符占一个字节- 1B = 8bit- 字节(Byte)、位(bit)- 1位即一个二进制数 0 或 1 <img src="https://img-blog.csdnimg.cn/2020082511502267.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"><br> <img src="https://img-blog.csdnimg.cn/20200825234113454.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"> **字符 与 字符代码** > 字符与字符代码并不是任意写一个,程序都能识别。例如`π`在程序中是不能识别的,只能使用系统中的字符集中的字符,目前大多数系统采用ASCll字符集。各种字符集(包括ASCll字符集)的基本集都包括了127个字符。其中常用的有: - `字母`:大写英文字母 A ~ Z ,小写英文字母 a ~ z,各26个。- `数字`:0 ~ 9- `专门符号`:29个 包括 `!` `"` `#` `&` `'` `(` `)` `*` `+` `-` `,` `/` `.` `:` `;` `<` `=` `>` `?` `[` `\` `]` `^` `_` `{<!-- -->` `|` `}` `~` <mark>`</mark>- `空格符`:**空格**、**水平制表符**(tab)、**垂直制表符**、**换行**(’\n’)、**换页**(’\f’)- `不能显示的字符`:**空(null)字符**(以’\0’表示)、**警告**(以’\a’表示)、**退格**(以’\b’)表示、**回车**(以’\r’表示)等 <img src="https://img-blog.csdnimg.cn/20200825230021421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"><br> <img src="https://img-blog.csdnimg.cn/20200825233216742.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述">
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种数据类型 整型数据、字符型数据、浮点型数据 进行了介绍。对于数组、函数、指针、空类型、结构体类型、共用体类型 和 枚举类型</strong>会在以后的文章中单独进行讲解。
以上内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 加油!!!
如果你感觉我写的内容对你有一定的帮助,请给我点一个 【赞】作为您对我的鼓励, 谢谢!!