首页 > 其他分享 >C语言中常见的数据类型及其处理方式

C语言中常见的数据类型及其处理方式

时间:2024-12-24 21:28:37浏览次数:5  
标签:0000 字节 int double 常见 数据类型 long C语言 1111

1.数据类型

  • 整型

    • 整型所占字节

      • int

        • 4字节

          • unsigned int

            • 0~2^32-1

          • signed int

            • -2^31~2^31-1

      • short

        • 2字节

          • unsigned short

            • 0~65535

          • signed short

            • -32768~32767

      • long

        • 8字节

          • unsigned long

            • 0~2^32-1

          • signed long

            • -2^31~2^31-1

      • long long

        • 8字节

          • unsingned long long

            • 0~2^32-1

          • signed long long

            • -2^31~2^31-1

    • 整型数据的存储

      • 字节顺序

        • 大端模式

          • 设计决定

            • eg:51单片机

        • 小端模式

          • 高位数据放在高地址处,低位数据放在低位地址处。

      • 整数向上/向下溢出:进行一定运算结果超出储存范围,储存范围是个圈。

        • 整数溢出问题

            • unsigned short int 0~65535

            • 当i=65535时 下次递增操作会使i变成0

            • 这个while语句和for语句相同

            • signed short int -32768~32767 32768 0 1000 0000 0000 0000 原码 -32768 1 1000 0000 0000 0000 原码 1 0111 1111 1111 1111 反码 1 1000 0000 0000 0000 补码 1 0111 1111 1111 1111 补码+1 00111 1111 1111 1111 前面超出的部分去掉

    • 整数的二进制转换

      • 正数

        • 原码 反码 补码 都相同

          • 举例 122 0111 1010 结果0x7a

      • 负数

        • 原码

          • 原码0000 0000 1111 1010

        • 反码 符号位不变 其余按位取反

          • 反码1111 1111 1000 0101

        • 在反码的基础上加1

          • 补码1111 1111 1000 0110 结果0xff86

      • 注意 计算机系统中所存储的是补码

        • 对补码求补码得原码

    • 整型的取值范围:

      • 取值决定应用范围

 

  • 浮点型

    • 浮点所占字节数

      • float 单精度 4字节

      • double 双精度 8字节

    • 浮点数的二进制转换

      • 将十进制形式小数转化成二进制形式小数

        • 整数部分 除2取余法

          • 列子:12.25

          • 12/2=6.。。。。0  6/2=3.。。。。0  3/2=1.。。。。1  1/2=0.。。。。1

        • 小数部分 乘2取整法

          • 0.25*2 = 0.5 。。。 0 0.5 *2 = 1.0 。。。。1

          • 二进制小数1100.01

      • 将二进制小数写成科学计数法形式

        • 1100.01 => 1.10001 *2^3

      • 按照IEEE 754存储

        • float

          • 1 | 8 | 23 符号位|指数位| 尾数位 指数位要加偏移量127 0 | 3+127 | 10001 2^(指数位-1)-1 0100 0001 0100 0100 0000 0000 0000 0000 4 1 4 4 0 0 0 0

        • double

          • 0 | 11 | 23 符号位 | 指数位 | 尾数位 尾数位更多精度更高 0 | 3 +1023 | 10001 2^(指数位-1)-1

    • 浮点式相等判断

      • 代码中出现的不论是变量,还是常量 他们一定有其对应的数据类型

      • 浮点数要进行相等的判断时 前提必须是同种精度

        • 0.9是按double来存的,但都是double,所以相等

      • 常量一般都有默认的数据类型 浮点型常量默认识别位double类型 整型常量默认识别为 int型 超过int范围则会识别为long

      • 显式的指定常量的类型

        • 123 int 123L long 123LL long long 1.23 double 1.23f float 1.23L long double

      • 接近问题

        • 当我们对0.9进行乘2取整法时 会发现结果无限循环

        • 0.9*2=1.8 1 0.8*2=1.6 1 0.6. *2=1.2 1 0.2. *2=0.4 0 0.4*2=0.8 0 0.8*2=1.6 1 0.6*2=1.2 1 无限循环 永远接近 但达不到

        • 这是因为double尾数比float多,所以比float更接近0.9

      • 如果想打印浮点数的地址

 

  • 字符型

    • ASCLL码

      • 0~32控制字符 并没有一个符合形式 而是对应一种控制效果 48~57对应的是 数字字符 0~9 65~90 大写字母'A'~'Z' 97~122 小写字母 'a'~'z'

    • 与整型的关系

      • char可以当成小整型,可以把它当成一个整数类型 所以会有unsigned char 0~255 和 signed char -128~127

      • char字符之间相互转换

 

 2.变量

  • 变量

    • 变量在程序运行中,其值能被改变。常量则相反。定义一个变量即为在内存中开辟一片空间,空间大小依据变量类型来定义。

      • 举例: int a; int为变量类型,a为变量名。开辟了名为a的空间。

    • 变量名

      • 组成

        • 数字,字母,—(下划线)

      • 规则

        • 数字不能做开头

        • 字母区分大小写

        • 不能与关键字(eg:main)重名

        • 不建议与预处理命令等二级关键词重名(eg:include)

        • 不建议与系统库函数同名(eg:printf)

    • 变量的初始化和赋值

      • 初始化:int a = 123

        • 定义同时赋值

      • 赋值:int a; a=123;

        • 赋值

 3.运算符

 

  • 运算符

    • sizeof

      • 功能:计算机运算数对应的数据类型大小,返回的是字节的个数。

    • printf(" f=%#x\n ");

      • 打印数据存储位置

4.进制转换 

  • 进制转换

    • 十进制

      • 十转N

        • 除N取余法

      • N转十

        • 加权求和法

    • 二进制

      • 二转八

        • 一位八进制数相当于三位二进制数

      • 二转十六

        • 一位十六进制数相当于四位二进制数

 

标签:0000,字节,int,double,常见,数据类型,long,C语言,1111
From: https://blog.csdn.net/weixin_62636532/article/details/144703061

相关文章

  • C语言——整型数据在内存中的存储
    整型数组在内存中的存储一、大小端存储1.大端存储(大端字节序存储)2.小端存储(小端字节序存储)>给大家一个题目,设计一个程序判断当前机器的字节序.二、原码、反码和补码1.*补充2.例题1.2.3.4.5.6.一、大小端存储1.大端存储(大端字节序存储)将一个数据的低位字节内容......
  • 【已解决】错误:未添加头文件(C语言经验分享)
    以上程序出现报错[Warning]incompatibleimplicitdeclarationofbuilt-infunction'strcspn'[Warning]incompatibleimplicitdeclarationofbuilt-infunction'strlen'cannotopenoutputfileC:Users#JlDesktoplcl1.1.1.exe:Permissiondenied[Err......
  • 【C语言】[waring]comparison between pointer and integer报错
     原因:在C语言中,指针和整型是不同的数据类型,它们之间不能直接进行比较。 改正:在arr[i]前加&取地址  [waring]comparisonbetweenpointerandinteger改正方法:1.显式类型转换(不推荐)intvalue=10;int*ptr=NULL;if((int)ptr==value){}这里if((int)ptr......
  • C语言学生管理系统|结构体数组+文件操作+按照姓名排序
    也是第一次使用Markdown语法orz定义结构体structstudent{charname[10];charsex[5];intage;intnum;intscore[5];//需要储存五门课的成绩};structclass{structstudentst[50];//最大可存储50个学生信息intn;};主菜单函数......
  • 常见的测试方法
    一般和界面打交道的测试人员只会用到黑盒测试的方法,因为没有代码阅读的权限。白盒测试偏向于代码化的测试用例设计,并且将其自并入CICD。黑盒测试用例设计方法黑盒测试侧重于从用户的角度验证系统功能是否符合需求,而不关注代码的内部实现。这里要说明测试方法不是铁板一块,在测......
  • 常见的机器学习算法,包含监督学习、无监督学习、半监督学习和强化学习
    一、监督学习算法(约70个)线性回归(LinearRegression)简单线性回归:用于建立一个自变量和一个因变量之间的线性关系,例如根据房屋面积预测房价,其模型表达式为\(y=\beta_0+\beta_1x+\epsilon\),其中\(y\)是因变量(房价),\(x\)是自变量(房屋面积),\(\beta_0\)和\(\beta_1\)是模型参数,\(\ep......
  • 2024 新版Clion安装使用教程(附激活以及常见问题处理)
    Clion简介在同学向我吐槽codeblock多么难用于是我疯狂安利CLion的时候,他发出了灵魂的拷问——“CLion是啥?”CLion和codeblock一样都是可以编写C/CPP的IDE(集成开发环境),CLion的优点多多,尤其是CLion对小白非常友好。配置简单:只需要点几下鼠标就可以完成编译器配置。语法查错:很多......
  • IDEA 2024.3.1.1完整的安装教程(附激活,常见问题处理)
    卸载老版本IDEA首先,如果小伙伴的电脑上有安装老版本的IDEA,需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安装即可):TIP:如果你之前使用过本站提供的 激活到2025年版本脚本,需要执行对应卸载脚本/适用2024版本/JetBrains2023最新全家桶/jetbra/scripts/uninstall-a......
  • C语言-详细讲解-动态数组统计成绩
    1.题目要求用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。输入提示信息:"Inputarraysizem,n:""Input%d*%darray:\n"输入m,n的格式......
  • Docker 环境中配置 Grafana:详细教程与常见配置项解析
    言简意赅的讲解Docker环境中通过修改Grafana配置解决的痛点Grafana是一个开源的数据可视化工具,用于监控和分析实时数据。它广泛应用于时序数据库如Prometheus、InfluxDB和其他数据源的监控展示。在Docker环境中运行Grafana是一种常见的做法,通过DockerCompose......