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
    
  • 相关阅读:
    图像处理国际会议
    [2015更新]用Word2007写CSDN博客
    【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结
    奇异秀App:奇异秀秀奇异,用大头视频来拜年
    通俗讲解傅里叶级数
    LIBSVM的使用方法
    VC6.0的工程设置解读Project--Settings
    HOG:从理论到OpenCV实践
    如何在 Kaggle 首战中进入前 10%
    linux学习(2)
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/2834347.html
Copyright © 2011-2022 走看看