`
javasogo
  • 浏览: 1822051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C核心技术手册(二十八)

 
阅读更多
4.1.5.3 有符号整型转换

整型类型转换中超过目标类型取值范围的问题,不仅存在在无符类型转换中,也存在有符号类型转换中,例如,当一个值由类型longunsigned 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类型的取值范围包含了longlong 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值转换为doublelong 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的初始化中,dzdouble_Complex值两部分都转换为floatfz的实数部分等于2.0F, 虚数部分为1.0F

分享到:
评论

相关推荐

    c语言核心技术(C in a Nutsbell)

    ### C语言核心技术(C in a Nutshell) #### 知识点概述 《C语言核心技术》是一本由C语言专家Peter Prinz与Tony Crawford合作撰写的权威性书籍,它旨在为C语言程序员提供全面且深入的核心知识和技术指导。本书不仅...

    C语言核心技术(英文文字版)

    ### C语言核心技术(英文文字版) #### 书籍概述 《C语言核心技术》是一本由 Tony Crawford 和 Peter Rinz 合著的经典技术书籍,由著名的 O'Reilly 出版社出版。该书首次发布于2005年12月,全书共计618页,ISBN号...

    c语言技术手册 chm

    《C语言技术手册》是一本全面且深入探讨C语言编程的资源,旨在帮助开发者和学习者迅速查询和理解C语言的各种函数及语法特性。CHM(Compiled Help Manual)格式是微软开发的帮助文档格式,通常包含丰富的索引、搜索...

    C语言核心技术(C: In a Nutshell)

    ### C语言核心技术(C: In a Nutshell) #### 核心知识点概览 《C语言核心技术》这本书由Tony Crawford和Peter Prinz等作者编写,由O'Reilly出版社于2005年12月出版。全书共有618页,涵盖了C语言的所有核心概念和...

    C语言核心技术 作者Tony rawford

    ### C语言核心技术——《C in a Nutshell》 #### 一、书籍简介 《C in a Nutshell》是由Tony Rawford和Peter Rinz共同编写的关于C语言的权威指南,出版社为O'Reilly,出版日期为2005年12月,ISBN编号为0-596-00697...

    C语言核心技术(pdf格式)

    《C语言核心技术》不仅适合C语言初学者快速入门,也适合有经验的程序员作为日常工作的参考手册。该书内容丰富,结构清晰,通过大量实例加深读者对C语言的理解和掌握,是C语言学习者和专业程序员的必备书籍之一。 ...

    MySQL核心技术手册(第二版)][1].(美)戴尔.扫描版.part2

     ·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。  ·给出了几个指导章节用于帮助新手入门。  ·为php、perl和c语言提供了应用程序编程接口(api)。  ·在每章的api开头部分提供了简要的指南。  ...

    C语言核心技术(英文PDF)

    《C语言核心技术》不仅适合初学者作为C语言学习的快速入门指南,也适合有经验的程序员作为日常工作的实用参考手册。书中深入浅出地讲解了C语言的各个方面,辅以丰富的示例代码,使读者能够在实践中加深理解和记忆。...

    C核心技术手册 (又名:C - In a Nutshell中文版)

    ### C核心技术手册知识点总结 #### 一、C语言的基础语法 **1.1 C的特征** C语言是一种过程式编程语言,由Dennis Ritchie于1970年代初在贝尔实验室开发,最初是为了实现UNIX操作系统及其应用程序能够尽可能地与...

    LINUX内核技术手册2.pdf

    根据提供的信息,《LINUX内核技术手册2.pdf》是一本专注于Linux内核配置、构建及安装的专业技术书籍。以下是对该书所涉及的关键知识点的详细总结: ### 一、书籍基本信息 - **书名**: Linux内核技术手册 - **作者*...

    H3C核心网产品技术参考资料汇总集.rar

    02H3 C VEPC3200核心网故障处理手册pdf 03H3CBBU3100系列基带处理单元故障处理手册,p 04H3 C VEPC3200产品开局自检手册pdf 05H3 C VMEGW3200技术白皮书pdf 06移动通信技术概述pdf 07H3CEPC3108核心网特性手册(E2123)...

    云打印C-Lodop技术手册

    《云打印C-Lodop技术手册》是一本详细介绍如何利用C-Lodop进行云端打印操作的技术文档。C-Lodop,全称为Cloud Lodop,是一款高效便捷的云打印解决方案,尤其适用于小票、箱贴、财务单等各类文档的远程打印需求。其...

    C语言核心技术(英文).pdf

    综上所述,《C语言核心技术》这本书不仅是一本C语言的入门指南,还是一本详尽的参考手册。无论是初学者还是有经验的开发者,都能从中受益匪浅。通过系统地学习这些内容,读者可以更高效地使用C语言进行编程,并解决...

    S3C2416核心板开发板硬件手册

    ### S3C2416核心板开发板硬件...综上所述,S3C2416核心板及其开发板为各类嵌入式系统设计提供了强大的硬件基础,其详细的硬件手册则为开发者提供了全面的技术指导和法律提示,是进行相关项目开发不可或缺的参考资料。

Global site tag (gtag.js) - Google Analytics