数据和C

本文参考C Primer Plus学习

文章目录

  • _Bool类型
  • float、double和long double
  • 复数和虚数类型
  • 其他类型

1._Bool类型

        _Bool类型,用于表示布尔值,即逻辑值true和false。因为C语言用值1表示true,值0表示false。所以_Bool类型实际上也是一种整数类型。但原则上它仅占用1位存储空间,因为对0和1而言,1位的存储空间就够了。

2.float、double和long double

计数法示例
数字指数计数法
10000000001.0e9
1230001.23e5
322.563.2256e2
0.0000565.6e-5

        C标准规定,float类型必须至少能表示6位有效数字,且取值范围10\hat{}-37~10\hat{}+37。前一项规定指float类型必须至少精确表示小数点后的6位有效数字,如3.333333。后一项规定用于方便的表示太阳质量(2.0e30千克)之类的数字。通常,系统储存一个浮点数要占用32位。其中8位用于表示指数的值和符号,剩下的24位用于表示非指数部分及其符号。

        C语言提供的另一种浮点类型是double(双精度)。double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。一般情况下,double占用64位而不是32位。一些系统将多出的32位全部用来表示非指数部分,这不仅增加了有效数字的位数(即提高了精度),而且还减少了舍入误差。另一些系统把其中的一些位分配给指数部分,以容纳更大的指数,从而增加了可表示数的范围。无论哪种方法,double 类型的值至少有13位有效数字,超过了标准的最低位数规定。
        C语言的第3种浮点类型是long double,以满足比 double类型更高的精度要求。不过,C只保证long double 类型至少与double类型的精度相同。
1.声明浮点型变量
浮点型变量的声明和初始化方式与整型变量相同;
float noah,jonah;

double trouble;

float planck = 6.63e-34;

long double gnp;

2.浮点型常量
        在代码中,可以用多种形式书写浮点型常量。浮点型常量的基本形式是:有符号的数字(包括小数点),后面紧跟e或E,最后是一个有符号数表示10的指数。下面是两个有效的浮点型常量:
-1.56E+12

2.87e-3
        正号可以省略。可以没有小数点(如,2E5)或指数部分(如,19.28),但是不能同时省略两者。可以省略小数部分(如,3.E16)或整数部分(如,.45E-6),但是不能同时省略两者。下面是更多的有效浮点型常量示例:
3.14159

.2

4e16 

 .8E-5

100.
        不要在浮点型常量中间加空格:1.56 E+12(错误!)
        默认情况下,编译器假定浮点型常量是 double 类型的精度。例如,假设 some编写下面的语句:
        some=4.0*2.0;

        通常,4.0和2.0被储存为64位的double类型,使用双精度进行乘法运算,然后将乘积截断成float类型的宽度。这样做虽然计算精度更高,但是会减慢程序的运行速度。
        在浮点数后面加上f或F后缀可覆盖默认设置,编译器会将浮点型常量看作float类型,如2.3f和9.11E9F。使用1或L后缀使得数字成为long double类型,如54.31和4.32L。注意,建议使用L后缀,因为字母1和数字1很容易混淆。没有后缀的浮点型常量是double类型。
        C99 标准添加了一种新的浮点型常量格式——用十六进制表示浮点型常量,即在十六进制数前加上十六进制前缀(0x或OX),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)。如下所示,
3.打印浮点值
        printf()函数使用sf转换说明打印十进制记数法的float和double类型浮点数,用%e打印指数记数法的浮点数。如果系统支持十六进制格式的浮点数,可用a和A分别代替e和E。打印long double类型要使用%Lf、%Le或%La转换说明。给那些未在函数原型中显式说明参数类型的函数(如,printf())传递参数时,C编译器会把float 类型的值自动转换成 double 类型。

#include <stdio.h>
int main(void)
{
    float aboat = 32000.0
    double abet = 2.14e9;
    long double dip = 5.32e-5;
    printf("%f can be written %e\n", aboat,aboat);
    // 下一行要求编译器支持C99或其中的相关特性
    printf("And it's %a in hexadecimal, powers of 2 notation\n",aboat );
    printf("%f can be written %e\n", abet, abet);
    printf("%Lf can be written %Le\n", dip, dip);
    return 0;
}

输出结果: 

(此系统不支持16进制格式的浮点数 )
4.浮点值的上溢和下溢
        假设系统的最大float 类型值是3.4E38,编写如下代码:

         float toobig = 3.4E38 * 100.0f;

         printf("%e\n",toobig);

        会发生什么?这是一个上溢(overflow)的示例。当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。这种行为在过去是未定义的,不过现在C语言规定,在这种情况下会给toobig赋一个表示无穷大的特定值,而且printf()显示该值为inf或infinity(或者具有无穷含义的其他内容)。当除以一个很小的数时,情况更为复杂。回忆一下,float类型的数以指数和尾数部分来储存。存在这样一个数,它的指数部分是最小值,即由全部可用位表示的最小尾数值。该数字是 float 类型能用全部精度表示的最小数字。现在把它除以 2。通常,这个操作会减小指数部分,但是假设的情况中,指数已经是最小值了。所以计算机只好把尾数部分的位向右移,空出第 1个二进制位,并丢弃最后一个二进制数。以十进制为例,把一个有4位有效数字的数(如,0.1234E-10)除以10,得到的结果是0.0123E-10。虽然得到了结果,但是在计算过程中却损失了原末尾有效位上的数字。这种情况叫作下溢(underlow)。C语言把损失了类型全精度的浮点值称为低于正常的(subnormal)浮点值。因此,把最小的正浮点数除以2将得到一个低于正常的值。如果除以一个非常大的值,会导致所有的位都为0。现在,C库已提供了用于检查计算是否会产生低于正常值的函数。
        还有另一个特殊的浮点值NaN (not a number 的缩写)。例如,给asin()函数传递一个值,该函数将返回一个角度,该角度的正弦就是传入函数的值。但是正弦值不能大于1,因此,如果传入的参数大于1,该函数的行为是未定义的。在这种情况下,该函数将返回NaN值,printf()函数可将其显示为nan、NaN或其他类似的内容。

3.复数和虚数类型

        C语言有3种复数类型:float_Complex、double_Complex和long double_Complex。例如,float_Complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。类似地,C语言的3种虚数类型是float_Imaginary、double_Imaginary和long double_Imaginary。

        如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_Imaginary。还可以用I代替-1的平方根。

        为何C标准不直接用complex作为关键字来代替_Complex,而要加一个头文件?因为如果使用新的关键字,会导致以该关键字作为标识符的现有代码全部失效。

4.其他类型

        数组、指针、结构和联合。后续会学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350081.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#,获取与设置Windows背景图片的源代码

为了满足孩子们个性化桌面的需求。 这里发布获取与设置Windows背景图片的源代码。 1 文本格式 using System; using System.IO; using System.Data; using System.Linq; using System.Text; using System.Drawing; using System.Collections; using System.Collections.Gene…

海外媒体发稿:出口贸易媒体发稿推广8种方法让您事半功倍-华媒舍

通过出口贸易媒体发稿可以帮助企业拓展市场、提升知名度&#xff0c;从而取得更好的出口贸易业绩。在进行媒体发稿时&#xff0c;需要确定目标受众&#xff0c;编写吸引人的标题&#xff0c;提供有价值的内容&#xff0c;并选择合适的媒体平台和发布时间。通过持续改进和优化&a…

九大项目主要页面预览

前后端开发均已完成&#xff0c;以后开发项目&#xff0c;从这些项目中拷贝源码就可以 一、网校平台后台系统 二、音频小说项目 三、仿微信项目 四、视频点播项目 五、商城系统 六、在线教育App 七、在线教育SSR网站 八、直播项目 九、社区交友

通过FileZilla配置FTP

FileZilla服务端的安装 在虚拟机里安装FileZilla服务器 FileZilla的官网 下载一个客户端和一个服务端的FileZilla 如果已经有了一个客户端&#xff0c;可以不下用载。 FileZilla的配置 说明一下&#xff1a;通过FileZilla配置FTP有两种模式&#xff0c;我们先用被动模式 下载…

基于密码技术的身份认证——基于对称密码体制的身份认证

一、符号说明&#xff1a; A→B&#xff1a;表示通信实体A向通信实体B发送消息&#xff1b; Ek(x)&#xff1a;表示用认证双方共享的密钥K对x进行加密&#xff1b; Text1&#xff0c;Text2&#xff0c;……&#xff0c;Text n属于可选项&#xff1b; ||&#xff1a;表示比特…

行测-言语:1.片段阅读

行测-言语&#xff1a;1.片段阅读 解题顺序&#xff1a;提问—文段—选项 忠于文段&#xff0c;对比择优 1. 中心理解题 1.1 重点词语 1.1.1 关联词 1.1.1.1 转折关系 A&#xff0c;转折后面是重点&#xff0c;不仅…还… 的内容是带来的结果。规范一定长期利好&#xff0c…

实验:eNSP AR通过telnet远程登录另外一台AR

实验2&#xff1a;eNSP AR通过telnet远程登录另外一台AR 基于实验1的基础上来进行&#xff0c;我们通过AR2220登录AR3260 首先设置远程登录密码 1、user-interface vty 0 4 进入用户的虚拟终端 2、设置密码 set authentication password cipher Huawei 这里的意思就是设置密…

微软 Power Apps Canvas App 画布应用将上传的附件转化为base64编码操作

微软 Power Apps Canvas App 画布应用将上传的附件结合Power Automate转化为base64编码操作 在使用canvas app的过程中&#xff0c;我们有时需要将上传的文件转换为base64存入数据库或者&#xff0c;调用外部接口传参&#xff0c;那么看下如何将文件转化为base64编码格式。 首先…

JVM系列-8.GC调优

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理&#x1f525;如果感觉博主的文…

STM32 USART 的25个函数简单说明

1、函数USART_DeInit 2、函数USART_Init 我们主要用USART_InitTypeDef中的成员含义 波特率 数据位 停止位 奇偶校验位 硬件流控制模式 收发模式 3、函数USART_StructInit 成员可参考2中函数成员解释 4、函数USART_Cmd 5、函数USART_ITConfig USART_IT&#xff1a;输入参数USAR…

【C++干货铺】常用的特殊类——饿汉模式和懒汉模式

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 请设计一个类&#xff0c;不能被拷贝 请设计一个类&#xff0c;只能在堆上创建对象 请设计一个类&#xff0c;只能在栈上创建对象 请设计一个类&#xff0c;不…

Maya的ai功能有哪些?Maya Assist是什么?

Autodesk Maya是一款流行的 3D 建模软件&#xff0c;艺术家和设计师使用它来创建现实的世界和表面。该软件以其与各种工具开发人员的合作而闻名&#xff0c;它允许多个工具的无缝集成以改进功能。Autodesk 的 Maya 刚刚发布了 Maya Assist&#xff0c;在 3D 建模和动画领域树立…

redis主从复制薪火相传

一.主从复制 1、是什么 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 2、能干嘛 读写分离&#xff0c;性能扩展&#xff08;主 写 从 读&#xff09; 容…

瑞_力扣LeetCode_二叉搜索树相关题

文章目录 说明题目 450. 删除二叉搜索树中的节点题解递归实现 题目 701. 二叉搜索树中的插入操作题解递归实现 题目 700. 二叉搜索树中的搜索题解递归实现 题目 98. 验证二叉搜索树题解中序遍历非递归实现中序遍历递归实现上下限递归 &#x1f64a; 前言&#xff1a;本文章为瑞…

【验证码逆向专栏】最新某验三代滑块逆向分析,干掉所有的 w 参数!

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

EOCR-FEZ漏电保护器下低压工业领域的应用

电柜中常见的故障主要包括以下几种&#xff1a; 断路器故障&#xff1a;断路器是配电柜中的主要元件之一&#xff0c;常见的故障包括断路器拒动、误动、爆炸、烧毁等。这些故障可能是由于断路器的机械故障、电气故障或者是控制回路的问题所导致的。接触器故障&#xff1a;接触…

华为防火墙USG6000V1的NAT实验

实验拓扑&#xff1a; 之前实验做过&#xff0c;可以翻找之前的博客&#xff0c;各设备ip和接口已配好&#xff0c;均可可ping通防火墙。 实验要求&#xff1a; 一.生产区在工作时间内可以访问dmz区域&#xff0c;仅可以访问http服务器。 二.办公区全天可以访问dmz区域&…

Ceph篇之搭建Ceph可视化界面Dashboard

一、Ceph Dashboard Ceph 提供了原生的Dashboard功能&#xff0c;通过Dashboard可以获取Ceph集群的各种基本状态信息等。 二、搭建Ceph Dashboard step1&#xff1a;在每个mgr节点安装 yum install ceph-mgr-dashboard -ystep2&#xff1a;开启mgr功能 ceph mgr module enab…

全新PHP短网址生成系统,短链接生成系统,URL缩短器系统源码

PHP短网址系统URL缩短器平台&#xff0c;它使您可以轻松地缩短链接&#xff0c;根据受众群体的位置或平台来定位受众&#xff0c;并为缩短的链接提供分析见解。 系统使用了Laravel框架编写&#xff0c;前后台双语言使用&#xff0c;可以设置多域名&#xff0c;还可以开设套餐等…

python24.1.26读文件

打开文件 encoding:编码方式 程序会记录读文件的位置 读一部分文字&#xff1a; 读一行文字&#xff1a; 结合while循环 readlines结合for循环 关闭文件&#xff1a; 或者 实践&#xff1a;