加载中…
个人资料
小贝
小贝
  • 博客等级:
  • 博客积分:0
  • 博客访问:19,433
  • 关注人气:3
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

《C++ Primer》学习笔记二 变量和基本类型(一)

(2009-05-04 16:49:21)
标签:

杂谈

、 
Types are fundamental to any program. They tell us what our data mean and what operations we can perform on our data. 
类型是所有程序的基础。类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。 
2、 
Primitive Built-in Types 
基本内置类型 
    2.1.C++: Arithmetic Types 
    2.1. C++ 算术类型 
         《C++ Primer》学习笔记二 变量和基本类型(一) - 小贝 - 碎石路 
     The size of the arithmetic types varies across machines. 
     算术类型的存储空间依机器而定。 
            2.1.1.Integral Types 
            2.1.1. 整型 
               The arithmetic types that represent integers, characters, and boolean values are collectively referred to as the integral types
              表示整数、字符和布尔值的算术类型合称为整型。       
              The types short, int, and long represent integer values of potentially different sizes. Typically, shorts are represented in half machine wordints in machine word, and longs in either one or two machine words (on 32-bit machines, ints and longs are usually the same size). 
      short、int 和 long 类型都表示整型值,存储空间的大小不同。一般, short 类型为半个机器字长,int 类型为一个机器字长,而 long 类型为一个或两个机器字长(在 32 位机器中 int 类型和 long 类型通常字长是相同的)。 

               Assignment to Integral Types 
               整型的赋值 
                For unsigned types, the compiler must adjust the out-of-range value so that it will fit. The compiler does so by taking the remainder of the value modulo the number of distinct values the unsigned target type can hold. An object that is an 8-bit unsigned char, for example, can hold values from through 255 inclusive. If we assign value outside this range, the compiler actually assigns the remainder of the value modulo 256. For example, we might attempt to assign the value 336 to an 8-bit signed char. If we try to store 336 in our 8-bit unsigned char, the actual value assigned will be 80, because 80 is equal to 336 modulo 256. 
               对于 unsigned 类型来说,编译器必须调整越界值使其满足要求。编译器会将该值对 unsigned 类型的可能取值数目求模,然后取所得值。比如 位的 unsigned char,其取值范围从 到 255(包括 255)。如果赋给超出这个范围的值,那么编译器将会取该值对 256 求模后的值。例如,如果试图将 336 存储到 位的 unsigned char 中,则实际赋值为 80,因为 80 是 336 对 256 求模后的值。 
              In C++ it is perfectly legal to assign negative number to an object with unsigned type. The result is the negative value modulo the size of the type. So, if we assign to an 8-bit unsigned char, the resulting value will be 255, which is modulo 256. 
             C++ 中,把负值赋给 unsigned 对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把 -1 赋给8位的 unsigned char,那么结果是 255,因为 255 是 -1 对 256 求模后的值。 
             When assigning an out-of-range value to signed type, it is up to the compiler to decide what value to assign. In practice, many compilers treat signed types similarly to how they are required to treat unsigned types. That is, they do the assignment as the remainder modulo the size of the type. However, we are not guaranteed that the compiler will do so for the signed types. 
             当将超过取值范围的值赋给 signed 类型时,由编译器决定实际赋的值。在实际操作中,很多的编译器处理 signed 类型的方式和 unsigned 类型类似。也就是说,赋值时是取该值对该类型取值数目求模后的值。然而我们不能保证编译器都会这样处理 signed 类型。 
        2.1.2. Floating-Point Types 
        2.1.2. 浮点型 
           The float type is usually not precise enough for real programsfloat is guaranteed to offer only significant digits. The double type guarantees at least 10 significant digits, which is sufficient for most calculations. 
          对于实际的程序来说,float 类型精度通常是不够的——float 型只能保证 位有效数字,而 double 型至少可以保证 10 位有效数字,能满足大多数计算的需要。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有