C语言重要知识点总结【8】:C语言中变量的数据类型

C语言重要知识点总结【8】:C语言中变量的数据类型

文章目录

  • 前言- 一、整型数据-

    前言

    上一篇提示:
    在上篇文章 [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>会在以后的文章中单独进行讲解。

    以上内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 加油!!!
    如果你感觉我写的内容对你有一定的帮助,请给我点一个 【赞】作为您对我的鼓励, 谢谢!!

    在这里插入图片描述

posted @ 2020-12-29 11:31  刘桓湚  阅读(648)  评论(0编辑  收藏  举报