C核心技术手册(二十八)
4.1.5.3 有符号整型转换
整型类型转换中超过目标类型取值范围的问题,不仅存在在无符类型转换中,也存在有符号类型转换中,例如,当一个值由类型long或unsigned int转换为int,结果为有符号整型并溢出,这与转换为无符号整数不同,后者将会丢弃执行结果。
绝大多数编译会丢弃原来值二进制表示的高位,并将最低位解释为新类型,如下例所示,在这种策略下,一个unsigned int类型现有的位模式被解释为一个有符号int值。
#include <limits.h> // Defines macros such as UINT_MAX
int i = UINT_MAX; // Result: i = -1 (in two's complement
// representation)
然而,由于编译器不同,这样的一个转换有的编译器会抛出一个信号提示值溢出。当一个实数和一个复数转换为有符号整型时,与转换为无符号整型具有同样的规则,这与前面一节描述的一样。
4.1.5.4 浮点类型实数转换
不是所有的整型值可以被浮点型表示,例如,虽然float类型的取值范围包含了long和long long的取值范围,float仅精确到小数点后6位,因而,一起long类型的值不能精确地存储在float对象中,这种转换的结果是下一个或更高的二进制值,如下例所示:
long l_var = 123456789L;
float f_var = l_var; // Implicitly converts long value to float.
printf("The rounding error (f_var - l_var) is %f/n", f_var - l_var);
记住此例中的减操作,像所有浮点型一样,结果至少具有double类型的精度,此代码段输出如下:
The rounding error (f_var - l_var;) is 3.000000
任意一个浮点类型可以使用精度比它大的另一个浮点类型来表示,因此,当一个double值转换为long double,或者当一个float值转换为double或long double,值会精确地保持。当从一个高精度转换为一个低精度类型时,然而,其值可能会超出新类型的范围,如果超出,转换的结果是未定义的;如果其值在目标类型的范围内,但目标类型的精度不能精确地表示它,此时,结果为下一更小的或下一个更大的二进制值,Example 2-2中的程序描述了转换为一个低精度浮点类型时产生的误差错误。
当一个复数转换为一个实数时,虚数部分被简单地丢弃掉,结果为复数据的实数部分,它之后可能会转换为本章中描述的目标类型。
4.1.5.5 浮点型复数转换
当一个整型或浮点型实数转换为一个复数类型时,结果值的实数部分按照前面的规则转换为浮点型实数,虚数部分为0。
当一个复数转换为另一个不同的复数类型时,实数和虚数数分单独根据浮点型实数的规则进行转换。
#include <complex.h> // Defines macros such as the imaginary
// constant I
double _Complex dz = 2;
float _Complex fz = dz + I;
在两行初始化语句中,整型常量2隐式地转换为double_Complex并赋值给dz, dz的结果为2.0 + 0.0 * I 。
在fz的初始化中,dz的double_Complex值两部分都转换为float,fz的实数部分等于2.0F, 虚数部分为1.0F。
转载于:https://www.cnblogs.com/dyx1024/archive/2011/01/18/2556776.html
C核心技术手册(二十八)相关推荐
- Citrix 服务器虚拟化之二十八 XenApp6.5发布文档内容
Citrix 服务器虚拟化之二十八 XenApp 6.5发布文档内容 XenApp可发布以下类型的资源向用户提供信息访问,这些资源可在服务器或桌面上虚拟化: 1) 服务器桌面:发布场中服务器的整个 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- 2008R2Win7管理二十八Mail之基本使用
2008R2Win7管理二十八Mail之基本使用 上篇我们已经安装好了exchange2010,呵呵本片简单介绍和看下ex2010的基本界面和使用 安装完成打开exchange控制台如图所示 汗,有试 ...
- 微信小程序把玩(二十八)image组件
原文:微信小程序把玩(二十八)image组件 image组件也是一个程序不可缺少的,可以这样说一个app中image组件随处可以看到,一般 image有两种加载方式第一种是网络图片第二种是本地图片资源 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...
- SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- FreeSql (二十八)事务
FreeSql实现了四种数据库事务的使用方法,脏读等事务相关方法暂时未提供.主要原因系这些方法各大数据库.甚至引擎的事务级别五花八门较难统一. 事务用于处理数据的一致性,处于同一个事务中的操作是一个U ...
- 计算机英语翻译3000字,英语专四作文满分范文(二十八):计算机翻译
英语专四作文满分范文(二十八):计算机翻译 2015年专四考试预计4月18日开考,考生们现在应该进入紧张的冲刺复习阶段,专四作文是很多同学感到头疼的,在这里新东方在线整理了英语专四作文满分范文供考生们 ...
- WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]
WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过Ser ...
- 【零基础学Java】—笔记本USB接口案例(二十八)
[零基础学Java]-笔记本USB接口案例(二十八) 一.笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB ...
最新文章
- AI人工智能天机芯芯片
- python的try exception捕获异常
- discuz数据库相关表
- 利用 Spring MVC 上传多文件到指定目录 spring upload files
- java实用教程——组件及事件处理——DocumentEvent事件
- jzoj100044-abcd【多重背包,二进制压缩,dp】
- linux系统故障排除
- JAVA MIDP_Java MIDP2.1和JAVA MIDP2.0的本质区别是什么啊?
- JavaScript实现按钮点击上/下一张切换图片
- gitlab-runner 注册失败
- mock.js文档详解5及下载(Random中的Name,Web,Address种类函数)
- GHOST启动盘制作
- The server time zone value ‘锟叫癸拷锟斤拷\u05FC时锟斤拷‘ is unrecognized or represents more than one time zone
- 大学想选择计算机专业,零基础如何快速学习编程?都是经验之谈
- 2019小米java开发
- Linux根目录下各目录的作用
- 健康地奋斗着——程序员自己的养生书
- yum install pcre pcre-devel 报错
- 文章字数统计(python)
- 管理经济学第一遍总结
热门文章
- Qlik发布中国战略,为实现更大成功而不懈努力
- MySQL(一):分别基于mysqldump、lvm2、xtrabackup三种方式实现备份恢复
- 编译安装LAMP对其性能压力测试
- Linux 命令(85)—— md5sum 命令
- Linux 命令(29)—— ls 命令
- OO第一单元总结——多项式求导
- java代码将excel文件中的内容列表转换成JS文件输出
- java in查询无法查询到数据(mybatis字符#与字符$的区别)
- LeetCode 260. Single Number III
- 2016京东编程题:年终奖