<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leaf Duo &#187; C++ Primer</title>
	<atom:link href="http://blog.leafduo.com/tag/c-primer/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.leafduo.com</link>
	<description>All About My Life and Information Technology</description>
	<lastBuildDate>Sun, 28 Feb 2010 14:39:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C++ Primer 随记——第 6 章，语句</title>
		<link>http://blog.leafduo.com/04/cpp-primer-note-5</link>
		<comments>http://blog.leafduo.com/04/cpp-primer-note-5#comments</comments>
		<pubDate>Mon, 23 Feb 2009 14:46:04 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ Primer]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=199</guid>
		<description><![CDATA[
case 标号必须是整型常量表达式。（Page 176）
任意两个 case 标号不能相同。（Page 176）
对于 switch 结构，只能在它的最后一个 case 标号或 default 标号后定义变量。（Page 176）
在循环条件中定义的变量在每次循环里都要经过创建和撤销的过程。（Page 178）
goto 语句不能跨越变量定义向前（下）跳转。（Page 185）
goto 语句只能在同一函数内跳转。（Page 185）

]]></description>
			<content:encoded><![CDATA[<ol>
<li>case 标号必须是整型常量表达式。（Page 176）</li>
<li>任意两个 case 标号不能相同。（Page 176）</li>
<li>对于 switch 结构，只能在它的最后一个 case 标号或 default 标号后定义变量。（Page 176）</li>
<li>在循环条件中定义的变量在每次循环里都要经过创建和撤销的过程。（Page 178）</li>
<li>goto 语句不能跨越变量定义向前（下）跳转。（Page 185）</li>
<li>goto 语句只能在同一函数内跳转。（Page 185）</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/04/cpp-primer-note-5/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C++ Primer 随记——第 5 章，表达式</title>
		<link>http://blog.leafduo.com/58/cpp-primer-note-4</link>
		<comments>http://blog.leafduo.com/58/cpp-primer-note-4#comments</comments>
		<pubDate>Mon, 23 Feb 2009 14:39:58 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ Primer]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=198</guid>
		<description><![CDATA[
负数的位运算，符号位的处理是机器相关的。（Page 134）
有符号数的右移操作插入符号位的副本或者 0，具体由实现而定。（Page 134）
以为操作符的有操作数必须非负，并且严格小于左操作数的位数，否则，结果是未定义的。（Page 134）
只有逻辑与、逻辑或、条件运算符和逗号运算符规定了求值顺序。（Page 148）
包含 signed int 和 unsigned int 的表达式， signed int 会转换为 unsigned int。（Page 155）

疑问：

强制类型转换。

]]></description>
			<content:encoded><![CDATA[<ol>
<li>负数的位运算，符号位的处理是机器相关的。（Page 134）</li>
<li>有符号数的右移操作插入符号位的副本或者 0，具体由实现而定。（Page 134）</li>
<li>以为操作符的有操作数必须非负，并且严格小于左操作数的位数，否则，结果是未定义的。（Page 134）</li>
<li>只有逻辑与、逻辑或、条件运算符和逗号运算符规定了求值顺序。（Page 148）</li>
<li>包含 signed int 和 unsigned int 的表达式， signed int 会转换为 unsigned int。（Page 155）</li>
</ol>
<p>疑问：</p>
<ol>
<li>强制类型转换。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/58/cpp-primer-note-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Primer 随记——第 4 章， 数组和指针</title>
		<link>http://blog.leafduo.com/53/cpp-primer-note-3</link>
		<comments>http://blog.leafduo.com/53/cpp-primer-note-3#comments</comments>
		<pubDate>Sun, 08 Feb 2009 15:56:53 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ Primer]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=196</guid>
		<description><![CDATA[
void* 指针只支持几种有限的操作：比较、传参数、赋值。不能通过 void* 指针操纵它所指向的对象。（Page 104）
void* 不是万能的，它不能指向 const 对象，使用 const void* 指向 const 对象。（Page 110）
指向 const 对象的指针也必须具有 const 特性。（Page 110）
定义指向数组的指针要注意优先级。比如 int (*ip)[4];。（Page 123）

]]></description>
			<content:encoded><![CDATA[<ol>
<li>void* 指针只支持几种有限的操作：比较、传参数、赋值。不能通过 void* 指针操纵它所指向的对象。（Page 104）</li>
<li>void* 不是万能的，它不能指向 const 对象，使用 const void* 指向 const 对象。（Page 110）</li>
<li>指向 const 对象的指针也必须具有 const 特性。（Page 110）</li>
<li>定义指向数组的指针要注意优先级。比如 int (*ip)[4];。（Page 123）</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/53/cpp-primer-note-3/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 随记——第 3 章，标准库类型</title>
		<link>http://blog.leafduo.com/00/cpp-primer-note-2</link>
		<comments>http://blog.leafduo.com/00/cpp-primer-note-2#comments</comments>
		<pubDate>Thu, 05 Feb 2009 08:58:00 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ Primer]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=195</guid>
		<description><![CDATA[
定义元素类型没有任何构造函数的 vector，标准库将对该对象的每个成员进行值初始化。（Page 80）
vector 迭代器支持一些算术操作。（Page 87）
string 对象和 bitset 对象之间是反向转化的。(Page 89)

]]></description>
			<content:encoded><![CDATA[<ol>
<li>定义元素类型没有任何构造函数的 vector，标准库将对该对象的每个成员进行值初始化。（Page 80）</li>
<li>vector 迭代器支持一些算术操作。（Page 87）</li>
<li>string 对象和 bitset 对象之间是反向转化的。(Page 89)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/00/cpp-primer-note-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 随记——第 2 章，变量和基本类型</title>
		<link>http://blog.leafduo.com/19/cpp-primer-note-1</link>
		<comments>http://blog.leafduo.com/19/cpp-primer-note-1#comments</comments>
		<pubDate>Fri, 23 Jan 2009 04:54:19 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ Primer]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=190</guid>
		<description><![CDATA[很久很久以前就买了 C++ Primer，但是一直是当工具书来看，现在闲下来了，就拿来仔细看看。
（由于是乱随记，看不懂的就不要看了）
第 1 章，快速入门，没有要记的。
第一部分 基本语言
第 2 章，变量和基本类型

表示整数、字符和布尔值的算数类型合称为整型。
char 是 signed 还是 unsigned 是由编译器确定的。
signed 类型如何用位来表示是由编译器决定的。
8 位 signed 类型的取值至少 -127~127，许多实现允许 -128~127。
将超出取值范围的数赋给 signed 类型时的行为是未定义的。
将超出取值范围的数赋给 unsigned 类型时，编译器会使用该值对 unsigned 类型的可能取值数目取模，然后将结果赋给该 unsigned 类型。
没有 short 类型的字面值常量。
默认的浮点字面值常量为 double 类型，在数值后面加 F 或 f 表示单精度，L 或 l 表示扩展精度。
字符前面加 L （只能大写）得到 wchar_t 类型的宽字符字面值。
字符串前面加 L （只能大写）得到宽字符串字面值。
两个相邻的仅由空白字符隔开的字符串字面值（或宽字符串字面值）可以连成一个新字符串字面值。
连接字符串字面值和宽字符串字面值的结果是未定义的。（g++ 会输出一个类似内存地址的东西，谁来解释下？）
C++ 定义了保留了一片关键字和替代名（63 个关键字和 11 个替代名）
标识符不能饱含两个连续的下划线，也不能以下划线开头后面紧跟一个大写字母，函数外面定义的标识符还不能以下划线开头。C++ 把他们留给标准库了……
在全局作用域里定义的 const 对象默认具有文件作用域，使用 extern 使整个程序可以访问它。（非 const [...]]]></description>
			<content:encoded><![CDATA[<p>很久很久以前就买了 <em>C++ Primer</em>，但是一直是当工具书来看，现在闲下来了，就拿来仔细看看。</p>
<p>（由于是<del datetime="2009-01-30T13:02:05+00:00">乱</del>随记，看不懂的就不要看了）</p>
<p>第 1 章，快速入门，没有要记的。</p>
<p>第一部分 基本语言</p>
<p>第 2 章，变量和基本类型</p>
<ol>
<li>表示整数、字符和布尔值的算数类型合称为整型。</li>
<li>char 是 signed 还是 unsigned 是由编译器确定的。</li>
<li>signed 类型如何用位来表示是由编译器决定的。</li>
<li>8 位 signed 类型的取值至少 -127~127，许多实现允许 -128~127。</li>
<li>将超出取值范围的数赋给 signed 类型时的行为是未定义的。</li>
<li>将超出取值范围的数赋给 unsigned 类型时，编译器会使用该值对 unsigned 类型的可能取值数目取模，然后将结果赋给该 unsigned 类型。</li>
<li>没有 short 类型的字面值常量。</li>
<li>默认的浮点字面值常量为 double 类型，在数值后面加 F 或 f 表示单精度，L 或 l 表示扩展精度。</li>
<li>字符前面加 L （只能大写）得到 wchar_t 类型的宽字符字面值。</li>
<li>字符串前面加 L （只能大写）得到宽字符串字面值。</li>
<li>两个相邻的仅由空白字符隔开的字符串字面值（或宽字符串字面值）可以连成一个新字符串字面值。</li>
<li>连接字符串字面值和宽字符串字面值的结果是未定义的。（g++ 会输出一个类似内存地址的东西，谁来解释下？）</li>
<li>C++ 定义了保留了一片关键字和替代名（63 个关键字和 11 个替代名）</li>
<li>标识符不能饱含两个连续的下划线，也不能以下划线开头后面紧跟一个大写字母，函数外面定义的标识符还不能以下划线开头。C++ 把他们留给标准库了……</li>
<li>在全局作用域里定义的 const 对象默认具有文件作用域，使用 extern 使整个程序可以访问它。（非 const 变量默认为 extern）</li>
<li>枚举成员值可以不是惟一的。比如 enum p {p1 = 1, p2 = 1, p3}; 是合法的。</li>
</ol>
<p>看完这一章，我发现 C++ 里有太多未定义的行为，不要依赖他们。</p>
<p>有一个问题，先看下面这段（在 2.3.1 节）：</p>
<blockquote><p>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.</p>
<p>C++ 程序员经常随意地使用术语对象。一般而言，对象就是内存中具有类型的区域。说得更具体一些，计算左值表达式就会产生对象。
</p></blockquote>
<p>什么叫“计算左值表达式就会产生对象”，计算右值表达式的时候不会产生对象吗？望高人解答。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/19/cpp-primer-note-1/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
