C++ Primer 随记——第 2 章,变量和基本类型

很久很久以前就买了 C++ Primer,但是一直是当工具书来看,现在闲下来了,就拿来仔细看看。

(由于是随记,看不懂的就不要看了)

第 1 章,快速入门,没有要记的。

第一部分 基本语言

第 2 章,变量和基本类型

  1. 表示整数、字符和布尔值的算数类型合称为整型。
  2. char 是 signed 还是 unsigned 是由编译器确定的。
  3. signed 类型如何用位来表示是由编译器决定的。
  4. 8 位 signed 类型的取值至少 -127~127,许多实现允许 -128~127。
  5. 将超出取值范围的数赋给 signed 类型时的行为是未定义的。
  6. 将超出取值范围的数赋给 unsigned 类型时,编译器会使用该值对 unsigned 类型的可能取值数目取模,然后将结果赋给该 unsigned 类型。
  7. 没有 short 类型的字面值常量。
  8. 默认的浮点字面值常量为 double 类型,在数值后面加 F 或 f 表示单精度,L 或 l 表示扩展精度。
  9. 字符前面加 L (只能大写)得到 wchar_t 类型的宽字符字面值。
  10. 字符串前面加 L (只能大写)得到宽字符串字面值。
  11. 两个相邻的仅由空白字符隔开的字符串字面值(或宽字符串字面值)可以连成一个新字符串字面值。
  12. 连接字符串字面值和宽字符串字面值的结果是未定义的。(g++ 会输出一个类似内存地址的东西,谁来解释下?)
  13. C++ 定义了保留了一片关键字和替代名(63 个关键字和 11 个替代名)
  14. 标识符不能饱含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母,函数外面定义的标识符还不能以下划线开头。C++ 把他们留给标准库了……
  15. 在全局作用域里定义的 const 对象默认具有文件作用域,使用 extern 使整个程序可以访问它。(非 const 变量默认为 extern)
  16. 枚举成员值可以不是惟一的。比如 enum p {p1 = 1, p2 = 1, p3}; 是合法的。

看完这一章,我发现 C++ 里有太多未定义的行为,不要依赖他们。

有一个问题,先看下面这段(在 2.3.1 节):

C++ programmers tend to be cavalier in their use of the term object. Most generally, an object is a region of memory that has a type. More specifically, evaluating an expression that is an lvalue yields an object.

C++ 程序员经常随意地使用术语对象。一般而言,对象就是内存中具有类型的区域。说得更具体一些,计算左值表达式就会产生对象。

什么叫“计算左值表达式就会产生对象”,计算右值表达式的时候不会产生对象吗?望高人解答。

Tags:,

This entry was posted in book, Information Technology and tagged , . Bookmark the permalink.

5 Responses to C++ Primer 随记——第 2 章,变量和基本类型

  1. Leewings says:

    在看 的飘过~~

  2. sqybi says:

    貌似C++里 比如两个数相加 是不会产生对象的吧...

  3. 杜士诚 says:

    ...貌似是这样的...这还得看英文...
    |-----|--------------------|
    lvalue hvalue
    这里我把lvalue理解为低位...你要是认为它是表示左值...那就是
    |-----|--------------------|
    lvalue rvalue
    这两种模型是殊途同归的,也就是说,lvalue中存储着hvalue或rvalue中的数据所表示的类型。整个这一区域被称为一个对象,因为它的数据(hvalue/rvalue)是带类型(lvalue)的...
    这仅仅是我的理解而已...
    有些事情还得看英文,比如“evaluating”不能翻译成计算...

  4. Leaf Duo says:

    @All
    基本明白了,可以去看看汇编的结果。

  5. 杜士诚 says:

    嗯嗯,对对!
    话说研究汇编要有非一般的热情,要像这样:
    http://hiphotos.baidu.com/poptown/pic/item/5354534e739deb1fb3de05b8.jpeg

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">