zoukankan      html  css  js  c++  java
  • 《C++ Primer》笔记C++ 基本数据类型

    《C++ Primer》中列出的基本数据类型,其中wchar_t是以前没见过的:

    字符类型有两种:char 和 wchar_t。char 类型保证了有足够的空间,能够 存储机器基本字符集中任何字符相应的数值,因此,char 类型通常是单个机器 字节(byte)。wchar_t 类型用于扩展字符集,比如汉字和日语,这些字符集中 的一些字符不能用单个 char 表示。

    对象的类型决定对象的取值。这会引起一个疑问:当我们试着把一个超出其 取值范围的值赋给一个指定类型的对象时,结果会怎样呢?答案取决于这种类型 是 signed 还是 unsigned 的。

    对于 unsigned 类型来说,编译器必须调整越界值使其满足要求。编译器会 将该值对 unsigned 类型的可能取值数目求模,然后取所得值。比如 8 位的 unsigned char,其取值范围从 0 到 255(包括 255)。如果赋给超出这个范围

    58

    的值,那么编译器将会取该值对 256 求模后的值。例如,如果试图将 336 存储 到 8 位的 unsigned char 中,则实际赋值为 80,因为 80 是 336 对 256 求 模后的值。

    对于 unsigned 类型来说,负数总是超出其取值范围。unsigned 类型的对 象可能永远不会保存负数。有些语言中将负数赋给 unsigned 类型是非法的,但 在 C++ 中这是合法的。

    C++ 中,把负值赋给 unsigned 对象是完全合法的,其结果是 该负数对该类型的取值个数求模后的值。所以,如果把 -1 赋 给 8 位的 unsigned char,那么结果是 255,因为 255 是 -1 对 256 求模后的值。

    当将超过取值范围的值赋给 signed 类型时,由编译器决定实际赋的值。在 实际操作中,很多的编译器处理 signed 类型的方式和 unsigned 类型类似。也 就是说,赋值时是取该值对该类型取值数目求模后的值。然而我们不能保证编译 器都会这样处理 signed 类型。 

     

    浮点型 :

    对于实际的程序来说,float 类型精度通常是不够的——float 型只能 保证 6 位有效数字,而 double 型至少可以保证 10 位有效数字,能 满足大多数计算的需要。 

    决定使用哪种浮点型就容易多了:使用 double 类型基本上不会有错。 在 float 类型中隐式的精度损失是不能忽视的,而 double 类型精度代 价相对于 float 类型精度代价可以忽略。事实上,有些机器上,double 类型比 float 类型的计算要快得多。long double 类型提供的精度通常 没有必要,而且还需要承担额外的运行代价。 

    page55image8216 page55image8640

    类型

    含义

    最小存储空间

    page55image13904 page55image14496 page55image14816 page55image15240 page55image15664

    bool

    page55image16912 page55image17504 page55image17664 page55image18088 page55image18512

    boolean

    NA


    char

    page55image27704

    character

    8 bits

    类型                              含义

    page56image2648  page56image4000

    最小存储空间

    wchar_t                  wide character

    page56image7984 page56image8144 page56image8736 page56image9160 page56image9584

    16 bits

    short                     short integer

    page56image13928 page56image14088 page56image14680 page56image15104 page56image15528

    16 bits

    int                            integer

    page56image19832 page56image19992 page56image20584 page56image21008 page56image21432

    16 bits

    long                      long integer

    page56image25776 page56image25936 page56image26528 page56image26952 page56image27376

    32 bits

    float             single-precision floating-point

    page56image31720 page56image31880 page56image32472 page56image32896 page56image33320
    6 significant digits
    

    double          double-precision floating-point

    page56image38944 page56image39104 page56image39696 page56image40120 page56image40544
    10 significant digits
    
    page56image42400 page56image42560 page56image43152 page56image43576 page56image44000

    long double       extended-precision floating-point

    page56image47456
    10 significant digits
    
  • 相关阅读:
    mac java 环境设置
    当你打开网页的时候,世界都发生了什么(1)
    不同场景下 MySQL 的迁移方案
    10分钟学会前端调试利器——FireBug
    中华人民共和国专利法
    【过时】博客园中使用syntaxhighlighter插件(图文详细版本)
    微软系列的网站小集合
    VS代码提示不出现或者提示变成英文或者各种奇葩问题的解决
    Linux基础命令
    【QQ技术】群文件报毒怎样下载?~ 变相绕过QQ复杂检验过程
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/2834347.html
Copyright © 2011-2022 走看看