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核心技术手册(二十八)相关推荐

  1. Citrix 服务器虚拟化之二十八 XenApp6.5发布文档内容

    Citrix 服务器虚拟化之二十八  XenApp 6.5发布文档内容 XenApp可发布以下类型的资源向用户提供信息访问,这些资源可在服务器或桌面上虚拟化: 1)  服务器桌面:发布场中服务器的整个 ...

  2. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  3. 2008R2Win7管理二十八Mail之基本使用

    2008R2Win7管理二十八Mail之基本使用 上篇我们已经安装好了exchange2010,呵呵本片简单介绍和看下ex2010的基本界面和使用 安装完成打开exchange控制台如图所示 汗,有试 ...

  4. 微信小程序把玩(二十八)image组件

    原文:微信小程序把玩(二十八)image组件 image组件也是一个程序不可缺少的,可以这样说一个app中image组件随处可以看到,一般 image有两种加载方式第一种是网络图片第二种是本地图片资源 ...

  5. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...

  6. SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  7. FreeSql (二十八)事务

    FreeSql实现了四种数据库事务的使用方法,脏读等事务相关方法暂时未提供.主要原因系这些方法各大数据库.甚至引擎的事务级别五花八门较难统一. 事务用于处理数据的一致性,处于同一个事务中的操作是一个U ...

  8. 计算机英语翻译3000字,英语专四作文满分范文(二十八):计算机翻译

    英语专四作文满分范文(二十八):计算机翻译 2015年专四考试预计4月18日开考,考生们现在应该进入紧张的冲刺复习阶段,专四作文是很多同学感到头疼的,在这里新东方在线整理了英语专四作文满分范文供考生们 ...

  9. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过Ser ...

  10. 【零基础学Java】—笔记本USB接口案例(二十八)

    [零基础学Java]-笔记本USB接口案例(二十八) 一.笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB ...

最新文章

  1. AI人工智能天机芯芯片
  2. python的try exception捕获异常
  3. discuz数据库相关表
  4. 利用 Spring MVC 上传多文件到指定目录 spring upload files
  5. java实用教程——组件及事件处理——DocumentEvent事件
  6. jzoj100044-abcd【多重背包,二进制压缩,dp】
  7. linux系统故障排除
  8. JAVA MIDP_Java MIDP2.1和JAVA MIDP2.0的本质区别是什么啊?
  9. JavaScript实现按钮点击上/下一张切换图片
  10. gitlab-runner 注册失败
  11. mock.js文档详解5及下载(Random中的Name,Web,Address种类函数)
  12. GHOST启动盘制作
  13. The server time zone value ‘锟叫癸拷锟斤拷\u05FC时锟斤拷‘ is unrecognized or represents more than one time zone
  14. 大学想选择计算机专业,零基础如何快速学习编程?都是经验之谈
  15. 2019小米java开发
  16. Linux根目录下各目录的作用
  17. 健康地奋斗着——程序员自己的养生书
  18. yum install pcre pcre-devel 报错
  19. 文章字数统计(python)
  20. 管理经济学第一遍总结

热门文章

  1. Qlik发布中国战略,为实现更大成功而不懈努力
  2. MySQL(一):分别基于mysqldump、lvm2、xtrabackup三种方式实现备份恢复
  3. 编译安装LAMP对其性能压力测试
  4. Linux 命令(85)—— md5sum 命令
  5. Linux 命令(29)—— ls 命令
  6. OO第一单元总结——多项式求导
  7. java代码将excel文件中的内容列表转换成JS文件输出
  8. java in查询无法查询到数据(mybatis字符#与字符$的区别)
  9. LeetCode 260. Single Number III
  10. 2016京东编程题:年终奖