﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-一步一个脚印，走在自己前面！</title><link>http://www.cppblog.com/zerolee/</link><description>想想自己5年后会是什么样子……</description><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 20:34:55 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 20:34:55 GMT</pubDate><ttl>60</ttl><item><title>Qt GUI Programming Basic</title><link>http://www.cppblog.com/zerolee/archive/2007/05/21/24538.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Mon, 21 May 2007 08:14:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/21/24538.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/24538.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/21/24538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/24538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/24538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Qt GUI programming basic&nbsp;&nbsp;<a href='http://www.cppblog.com/zerolee/archive/2007/05/21/24538.html'>阅读全文</a><img src ="http://www.cppblog.com/zerolee/aggbug/24538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-21 16:14 <a href="http://www.cppblog.com/zerolee/archive/2007/05/21/24538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快捷菜单编程</title><link>http://www.cppblog.com/zerolee/archive/2007/05/20/24439.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Sun, 20 May 2007 07:47:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/20/24439.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/24439.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/20/24439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/24439.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/24439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 快捷菜单编程&nbsp;&nbsp;<a href='http://www.cppblog.com/zerolee/archive/2007/05/20/24439.html'>阅读全文</a><img src ="http://www.cppblog.com/zerolee/aggbug/24439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-20 15:47 <a href="http://www.cppblog.com/zerolee/archive/2007/05/20/24439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DLL编程专题</title><link>http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Sun, 20 May 2007 03:32:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/24430.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/24430.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/24430.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DLL编程专题。&nbsp;&nbsp;<a href='http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html'>阅读全文</a><img src ="http://www.cppblog.com/zerolee/aggbug/24430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-20 11:32 <a href="http://www.cppblog.com/zerolee/archive/2007/05/20/24430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> sizeof操作符使用注意</title><link>http://www.cppblog.com/zerolee/archive/2007/05/19/24393.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Sat, 19 May 2007 08:14:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/19/24393.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/24393.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/19/24393.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/24393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/24393.html</trackback:ping><description><![CDATA[&nbsp;sizeof操作符使用注意：<br>
<p><br>&nbsp;先看下面的测试代码(1)和(2)：<br>&nbsp;=====================================================================</p>
<span>
<p>测试代码(1) :&nbsp; <span><br>const char* a[] = { "a", "bcedf" };</span></p>
<p align=left><span>// </span><span>测试下面的</span><span>sizeof(a)</span><span>，它的结果是</span><span>&#8217;8&#8217;, </span><span>原因在于</span><span>a</span><span>是指针数组，里面存储的是指针元素。</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>// </span><span>在这里是两个指针元素的数组。故为</span><span>4*2=8.</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>cout &lt;&lt; sizeof(a) &lt;&lt; endl;&nbsp;// print '8'</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>// test sizeof(*a), sizeof(a[0]), sizeof(a[0][0])</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>cout &lt;&lt; sizeof(*a) &lt;&lt; endl;&nbsp;// print '4'&nbsp;</span><span>这里</span><span>*a</span><span>是求出第一个字符串的地址</span><span>,</span><span>注意</span><span>a</span><span>是指针的指针。</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>cout &lt;&lt; sizeof(a[0]) &lt;&lt; endl;// print '4'&nbsp;</span><span>这里是</span><span>a[0] = *a,</span><span>跟上面的一样。</span></p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; sizeof(a[0][0]) &lt;&lt; endl; // print '1' <span style="COLOR: red">这里是第一个字符串的第一个字符a，一个字节。<br></span><br>测试代码(2) :<br>struct TestStruct {<br>&nbsp; &nbsp;char c_elem;&nbsp;// 1 bytes<br>&nbsp;&nbsp; int int_elem;&nbsp;// 4 bytes<br>&nbsp;};</p>
<p><span>&nbsp;cout &lt;&lt; sizeof(TestStruct) &lt;&lt; endl;&nbsp;&nbsp;&nbsp;&nbsp; // it prints '8' .<br>&nbsp;<br>struct TestStruct1 {<br>&nbsp;&nbsp;&nbsp; char c_elem1;<br>&nbsp;&nbsp;&nbsp; char c_elem2:<br>&nbsp;&nbsp;&nbsp; char c_elem3;<br>&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// num 个char类型数据成员<br>};<br>&nbsp;&nbsp; cout &lt;&lt; sizeof(TestStruct1) &lt;&lt;endl;&nbsp; // it prints num.<br>&nbsp;<br>&nbsp;// 输出的结果与具体的系统结构有关，此处是32位机，故为了寻址的快捷和方便，系统会自动的填补(padding).<br>&nbsp;// int类型是4个字节，char类型为1个字节，但是此处会自动填补3个字节到struct结构中使其成为4个字节。<br>&nbsp;// 但是如果struct中只有一种类型，譬如char或int类型时，不会产生此种填补的情况。但是如果不是，它会输出<br>&nbsp;// 4的倍数个字节。<br>======================================================================<br></p>
</span></span>
<p><span></span>&nbsp;</p>
<img src ="http://www.cppblog.com/zerolee/aggbug/24393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-19 16:14 <a href="http://www.cppblog.com/zerolee/archive/2007/05/19/24393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读写磁盘文件专题--采用C/C++/MFC/WIN32(API)方式</title><link>http://www.cppblog.com/zerolee/archive/2007/05/19/24389.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Sat, 19 May 2007 07:54:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/19/24389.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/24389.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/19/24389.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/24389.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/24389.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 采用C/C++/MFC/WIN32(API)方式读写磁盘文件的方法。&nbsp;&nbsp;<a href='http://www.cppblog.com/zerolee/archive/2007/05/19/24389.html'>阅读全文</a><img src ="http://www.cppblog.com/zerolee/aggbug/24389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-19 15:54 <a href="http://www.cppblog.com/zerolee/archive/2007/05/19/24389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求N个三角形的最大最小内切圆的方法</title><link>http://www.cppblog.com/zerolee/archive/2007/05/09/23684.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Wed, 09 May 2007 02:25:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/05/09/23684.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/23684.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/05/09/23684.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/23684.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/23684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/zerolee/archive/2007/05/09/23684.html'>阅读全文</a><img src ="http://www.cppblog.com/zerolee/aggbug/23684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-05-09 10:25 <a href="http://www.cppblog.com/zerolee/archive/2007/05/09/23684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译期的依赖性系列</title><link>http://www.cppblog.com/zerolee/archive/2007/03/29/20876.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Thu, 29 Mar 2007 07:02:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/03/29/20876.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/20876.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/03/29/20876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/20876.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/20876.html</trackback:ping><description><![CDATA[该文章包括3个部分。<img src ="http://www.cppblog.com/zerolee/aggbug/20876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-03-29 15:02 <a href="http://www.cppblog.com/zerolee/archive/2007/03/29/20876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译器何时为你产生默认构造函数</title><link>http://www.cppblog.com/zerolee/archive/2007/03/27/20676.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Tue, 27 Mar 2007 02:21:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/03/27/20676.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/20676.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/03/27/20676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/20676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/20676.html</trackback:ping><description><![CDATA[
		<p class="docText">
				<font face="Courier New" size="2">总结：<br />    有四种情况，会导致“编译器必须为未声明构造函数的classes合成一个默认构造函数”。C++ 标准把那些合成物称为隐含的有用默认构造函数。被合成出来的构造函数只能满足编译器(非程序)的需要。它之所以能够完成任务，是借着“调用成员对象或基类的默认构造函数”或是“为每一个对象初始化其虚函数机制或虚基类机制”而完成的。至于没有存在那四种情况而又没有声明构造函数的类，我们说它们拥有的是隐含的无用默认构造函数，实际上它们并不被合成出来。<br />    在合成的默认构造函数中，只有基类子对象和成员对象会被初始化。所有其它的非静态数据成员，如整数、整数指针、整数数组等等都不会被初始化。这些初始化操作对程序而言有需要，但对编译器而言则没必要。如果程序需要一个“把某指针设为0”的默认构造函数，那么提供它的人应该是程序员。<br />   <br />    C++新手一般有两个常见的误解：<br />1）任何类如果没有定义默认构造函数，编译器就会合成出它来。<br />2）编译器合成出来的默认构造函数会明确设定“类中每一个数据成员的默认值”。<br /><br />正如你所见，上述两个没有一个是真的！<br />-------------------------------------------------------------------------------------------<br />Summary: <br />   There are four characteristics of a class under which the compiler needs to synthesize a default constructor for classes that declare no constructor at all. The Standard refers to these as implicit, nontrivial default constructors. The synthesized constructor fulfills only an implementation need. It does this by invoking member object or base class default constructors or initializing the virtual function or virtual base class mechanism for each object. Classes that do not exhibit these characteristics and that declare no constructor at all are said to have implicit, trivial default constructors. In practice, these trivial default constructors are not synthesized.</font>
		</p>
		<p class="docText">
				<font face="Courier New" size="2">Within the synthesized default constructor, only the base class subobjects and member class objects are initialized. All other nonstatic data members, such as integers, pointers to integers, arrays of integers, and so on, are not initialized. These initializations are needs of the program, not of the implementation. If there is a program need for a default constructor, such as initializing a pointer to 0, it is the programmer's responsibility to provide it in the course of the class implementation.</font>
		</p>
		<p class="docText">
				<font face="Courier New" size="2">Programmers new to C++ often have two common misunderstandings:<br /><br />1) </font>
				<span style="FONT-WEIGHT: bold">
						<span style="FONT-WEIGHT: normal">
								<font face="Courier New" size="2">That a default constructor is synthesized for every class that does not define one<br />2) </font>
						</span>
						<span style="FONT-WEIGHT: normal">
								<font face="Courier New" size="2">That the compiler-synthesized default constructor provides explicit default initializers<br />   for each data member declared within the class</font>
						</span>
				</span>
		</p>
		<p class="docText">
				<font face="Courier New" size="2">As you have seen, neither of these is true.<br /><br />--------------------------------------------------------------------------------------------<br /></font>
		</p>
<img src ="http://www.cppblog.com/zerolee/aggbug/20676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-03-27 10:21 <a href="http://www.cppblog.com/zerolee/archive/2007/03/27/20676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组件间的物理关系</title><link>http://www.cppblog.com/zerolee/archive/2007/03/20/20243.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Tue, 20 Mar 2007 12:56:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/03/20/20243.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/20243.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/03/20/20243.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/20243.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/20243.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" size="2">   开发可维护、易测试和可重用的软件需要全面的物理设计和逻辑设计的知识。物理设计研究组织的问题，超出了逻辑领域的范畴，物理设计很容易影响可测量的特性，例如运行时间、编译时间、连接时间以及可执行文件大小。<br /><br />   一个组件是由一个.c文件和.h文件组成的物理实体，它具体表达了一个逻辑抽象的具体实现。一个组件一般包含一个、两个甚至多个类，已经需要用来支持全部抽象的适当的自由运算符。一个组件（而不是一个类）是逻辑设计和物理设计的适当单位，因为它能够：<br />   1)让若干逻辑实体把一个单一的抽象表现为一个内聚单位；<br />   2)考虑到物理问题和组织问题；<br />   3)在其他程序中选择性地重用编译单元。<br /><br />   一个组件的逻辑接口仅限于指能够被客户程序通过编译访问的部分，而物理接口则包括它的整个头文件。如果在一个组件的物理接口中使用了一个用户自定义类型T，即使T是一个封装的逻辑细节，也可能迫使那个组件的客户程序在编译时依赖T的定义。<br />   组件是自我包含的、内聚的和潜在的可重用的设计单位。在一个组件内部声明的逻辑结构不应该定义在那个组件之外。一个组件的.c文件应该直接包含它的.h文件，以确保.h文件可基于它自己进行语法分析。对于每一个需要的类型定义，都始终包含其头文件，而不是依赖一个头文件去包含另一个，这样，当一个组件允许一个#include 指令从其头文件中被删除时不会出现问题。想要改进可用性、可重用性和可维护性，如果某个带有外部连接的结构没有在一个组件的.h文件声明，那么我们应该避免把该结构放在这个组件的.c文件中。同样的原因，我们应该避免使用局部声明去访问有外部连接的定义。<br />   <br />   最后友元关系虽然表面上是一个逻辑关系，但会影响到物理设计。在一个组件内部，（局部的）友元关系是那个组件的一个封装的实现细节。为了改进可用性和用户可扩展性，一个容器类常常会把同一个组件内的迭代器视作友元，不会破坏封装。友元关系只会直接影响访问权限但不会隐含依赖。</font>
		</p>
<img src ="http://www.cppblog.com/zerolee/aggbug/20243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-03-20 20:56 <a href="http://www.cppblog.com/zerolee/archive/2007/03/20/20243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>输出字符'A'/'a'的解析</title><link>http://www.cppblog.com/zerolee/archive/2007/01/15/17631.html</link><dc:creator>仄洛</dc:creator><author>仄洛</author><pubDate>Mon, 15 Jan 2007 02:59:00 GMT</pubDate><guid>http://www.cppblog.com/zerolee/archive/2007/01/15/17631.html</guid><wfw:comment>http://www.cppblog.com/zerolee/comments/17631.html</wfw:comment><comments>http://www.cppblog.com/zerolee/archive/2007/01/15/17631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zerolee/comments/commentRss/17631.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zerolee/services/trackbacks/17631.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="2">输出字符'A'/'a'的代码段：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test1: Directly insert 0x0A and 0x41 to ostream</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x0A</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> print type int 10</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> print type int 65, which is decimal number of 'A'.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test2: Directly insert '\x41' to ostream</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\x41</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> '\x41' is transformed char, which means type char 'A'.<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />                       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> So, it prints type char 'A'  on screen.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test3: First assign 0x41 to char variable, then output it.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> char_out </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> char_out is equal 'A' which is type int 65.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> char_out;        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> it prints type char 'A' on screen.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test4: First cast 0x0A to char, then output it.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> static_cast</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000">); // it prints type char 'A' on screen.<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test5: Directly insert hexdecimal type number of 'A'</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24 </span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> std::hex </span><span id="Codehighlighter1_748_767_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&lt;&lt; std::showbase</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> it prints string literal "41" </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> std::hex </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x0A</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> it prints type char 'a' on screen.<br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> int_out </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> int_out; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> it prints type int 8342**</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #000000"><font color="#008080">29</font><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />    cout </span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000"> endl;</span></div>   0x41是字符'A'的16进制表示方式，它的10进制数是65，\x41是字符'A'的转义字符。而0x0A跟字符'A'没有丝毫关系，顶多就是0x0A借用了字符'A'而已。故如果想在屏幕上输出字符'A'可将其转义字符直接插入输出流中，或者将0x41转化为字符类型，然后插入，不得使用0x41直接插入，因为0x41本身是int类型的10进制数65。同时也不可以将'0x41'直接插入输出流，因为'0x41'是int类型的数。<br />   可以尝试使用控制符std::hex来插入字符'a'到输出流。<br /></font>
<img src ="http://www.cppblog.com/zerolee/aggbug/17631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zerolee/" target="_blank">仄洛</a> 2007-01-15 10:59 <a href="http://www.cppblog.com/zerolee/archive/2007/01/15/17631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>