<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>编程技术</title><link>http://blog.vckbase.com/panic/category/596.html</link><description>C++/算法/数据结构</description><managingEditor>Panic</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>Panic</dc:creator><title>字符串拷贝的小问题</title><link>http://blog.vckbase.com/panic/archive/2007/12/28/31543.html</link><pubDate>Fri, 28 Dec 2007 12:33:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2007/12/28/31543.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/31543.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2007/12/28/31543.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/31543.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/31543.html</trackback:ping><description>&lt;P&gt;作者： &lt;A href="http://blog.vckbase.com/panic/"&gt;&lt;a title="Panic" href="http://blog.vckbase.com/panic/" &gt;Panic&lt;/a&gt;&lt;/A&gt; 2007年12月28日&lt;BR&gt;&lt;BR&gt;先看代码：&lt;BR&gt;&lt;BR&gt;&amp;nbsp;char buf [20];&lt;BR&gt;strcpy(buf, "abcdefghijklmnopqrstuvwxyz");&lt;BR&gt;&lt;BR&gt;呵呵，只有两行，单独看都没错，合起来就麻烦了。&lt;BR&gt;是的，buf的长度只有20字节，无法容纳一个26字符还要外带一个'\0'结尾的字符串。&lt;BR&gt;这个拷贝操作将导致内存写操作越界，从而破坏其他地方的数据。&lt;BR&gt;&lt;BR&gt;这并不是一个很难发现的错误，但是当buf的定义和拷贝的时机相隔很远，或者频繁使用了strcat一类函数而忽视了字符串长度的时候，想要找出这个问题，还是比较麻烦的。&lt;BR&gt;&lt;BR&gt;解决方法有几种，最简单的就是定义足够大的缓冲区，比如当拷贝路径的时候，使用MAX_PATH宏。但是这有时候不太现实。&lt;BR&gt;我们也可以使用一个string类来管理，比如MFC的CString，或者STL的std::string，都可以，当增长的时候只要调用operator +就可以了。&lt;BR&gt;还有一个方式是使用strncpy，强制每次拷贝都输入一个长度参数。当然，这个参数的数值一般是buf的长度减1，buf的最后一个字节，则在初始化的时候就应该赋值为'\0'。这可以避免很多问题，但是遇到strcat的时候仍旧会有潜在危险，你可以考虑使用strncat，虽然这会带来额外的复杂性。&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/panic/aggbug/31543.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>有符号 &amp; 无符号！改变计算结果的陷阱！</title><link>http://blog.vckbase.com/panic/archive/2007/12/05/31098.html</link><pubDate>Wed, 05 Dec 2007 12:09:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2007/12/05/31098.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/31098.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2007/12/05/31098.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/31098.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/31098.html</trackback:ping><description>作者： &lt;A href="http://blog.vckbase.com/panic/"&gt;&lt;a title="Panic" href="http://blog.vckbase.com/panic/" &gt;Panic&lt;/a&gt;&lt;/A&gt; 2007年12月5日&lt;BR&gt;&lt;BR&gt;简单的代码，复杂的问题。&lt;BR&gt;环境：VC6SP5,Win2kPro&lt;BR&gt;&lt;BR&gt;int b = 10; //已经赋值为有效数据&lt;BR&gt;const char * str = "1234567890ABCDEF"; //已经赋值为有效的字符串。&lt;BR&gt;int a&amp;nbsp;= (b - strlen(str) ) / 2;&lt;BR&gt;&lt;BR&gt;经过了这样的计算，a的值究竟是多少？&lt;BR&gt;结果当然不是 (10-16)/2 的 -3，而是一个天文数字。。。。&lt;BR&gt;a = 2147483645 或者，16进制的 0x7ffffffd&lt;BR&gt;&lt;BR&gt;真正的问题代码只有一行，但是结果却令人不快。&lt;BR&gt;&lt;BR&gt;这里分析一下产生这个问题的原因：&lt;BR&gt;一个隐含的问题是，strlen的返回值，类型是size_t，也就是unsigned int。这是个无符号类型。&lt;BR&gt;当unsigned int 和 int混合运算的时候，编译器会认为，unsigned int的表达长度比较长，因而结果的类型是unsigned int。&lt;BR&gt;所以 b - strlen(str) 的结果不是 -6，而是和-6具有相同内存布局的unsigned int 值：0xfffffffa，也就是正的4294967290&lt;BR&gt;如果这个数值直接赋值给int，会因为内存布局相同，而避免问题的产生－－问题存在，但是不产生不良效果。但是随后的/2操作把问题彻底暴露出来了。。&lt;BR&gt;/2操作可以认为是一次移位，对于无符号类型，移位后高位补0，于是把原本有符号类型赖以利用的符号位清零了。。最终这个数值赋值给int类型的时候，结果就变成了前面提到的那个可怕的数值。。&lt;BR&gt;&lt;BR&gt;有符号数字和无符号数字混合运算的时候，存在一些默认的转换规则，符合这些规则的转换，都不会引发编译器警告或者错误，因此这类问题是难以觉察的。但是，我们需要经常使用的库函数太多了，当参与运算的时候，为每个函数调用都指定一个固定类型的返回值，似乎是不可能的任务。因此如果你的程序中充满各种不同类型的整型运算，那么还是尽量小心一些吧。。。&lt;img src ="http://blog.vckbase.com/panic/aggbug/31098.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>不同种类的整型比较，到底发生了什么？</title><link>http://blog.vckbase.com/panic/archive/2007/07/17/27489.html</link><pubDate>Tue, 17 Jul 2007 03:31:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2007/07/17/27489.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/27489.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2007/07/17/27489.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/27489.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/27489.html</trackback:ping><description>看这么两行代码：&lt;BR&gt;	int i = -1;&lt;BR&gt;	cout &lt;&lt; (char(i) == unsigned char(i))  &lt;&lt; endl;&lt;BR&gt;在VC6.0下，永远输出0。而下面这两行代码也永远输出0&lt;BR&gt;	int i = 255;&lt;BR&gt;	cout &lt;&lt; (char(i) == unsigned char(i))  &lt;&lt; endl;&lt;BR&gt;&lt;BR&gt;而实际上，以上两个代码中，char(i)和unsigned char(i)具有的内存布局都是完全相同的。由于整型之间的类型转换遵循这样的原则：当目标类型比原类型短的时候，直接截断原类型。而当目标类型较长，则无符号类型会直接在高位补0，有符号类型在高位补符号位。&lt;BR&gt;&lt;BR&gt;在VC6下，而当两个长度相同，并且具有相同内存布局的整型相比较的时候，编译器做如下的工作：&lt;BR&gt;首先两者长度&lt;=int的长度的时候，全部转化为int，然后实施比较。&lt;BR&gt;所以char(-1)转化的结果是0xFFFFFFFF，而unsigned char(-1)转化的结果是0x000000FF。两者作为int比较的时候，自然是不相等的。&lt;BR&gt;但是，特别的，当两者长度刚好是int长度的时候，比较的结果仅取决于内存布局，而有符号和无符号的转化也不会改变内存布局。&lt;BR&gt;&lt;BR&gt;这个事实引起了一个问题，当我们使用char/unsigned char,short/unsigned short这类比int短的类型的时候，无符号类型的变量是绝对不会和有符号的-1相等的，而使用int的时候，int(-1)和unsigned int(-1)则是完全相等的。这使得修改变量类型会引发比较结果的变化，尤其是在做变量扩展，或者在模板代码中这个问题有可能会引发难以觉察的错误。&lt;BR&gt;&lt;BR&gt;对这个问题的建议是：永远都不要进行有符号类型和无符号类型之间的数值比较，不同长度的类型之间的比较也要尽量避免。&lt;img src ="http://blog.vckbase.com/panic/aggbug/27489.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>配置apache，Cannot load php5apache2.dll的错误解决</title><link>http://blog.vckbase.com/panic/archive/2007/02/07/24496.html</link><pubDate>Wed, 07 Feb 2007 13:08:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2007/02/07/24496.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/24496.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2007/02/07/24496.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/24496.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/24496.html</trackback:ping><description>被这个问题困扰了一个晚上，搜索了很久都没有找到解决办法。&lt;BR&gt;最后无意间看到这个：&lt;BR&gt;anthony 发表于2006-07-21 15:19:00  IP: 221.223.64.*&lt;BR&gt;关于 "cannot load php5apache2dll" 的问题，是因为php自带的php5apache2.dll只能跟某个特定版本的apache2使用的缘故。只需要到 http://www.apachelounge.com/download/ 下php5apache2.dll-php5.1.x.zip 然后照里面的说明跟着做问题就解决了。&lt;BR&gt;&lt;BR&gt;我下载的apache是最新版，貌似php还没有制作对应的php5apache2.dll文件，所以出错了，重新安装了一个旧版的apache就解决了。&lt;BR&gt;&lt;BR&gt;郁闷。。。&lt;img src ="http://blog.vckbase.com/panic/aggbug/24496.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>星星出的丢玻璃棋子的题目，我的解法</title><link>http://blog.vckbase.com/panic/archive/2006/12/07/23399.html</link><pubDate>Thu, 07 Dec 2006 07:55:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/12/07/23399.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/23399.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/12/07/23399.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/23399.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/23399.html</trackback:ping><description>星星链接：&lt;BR&gt;&lt;A href="http://blog.vckbase.com/bruceteen/archive/2006/12/07/23394.html"&gt;http://blog.vckbase.com/bruceteen/archive/2006/12/07/23394.html&lt;/A&gt;&lt;BR&gt;原题：&lt;BR&gt;&lt;!--StartFragment --&gt;&amp;nbsp;&lt;STRONG&gt;问题：&lt;/STRONG&gt;&lt;BR&gt;有一幢100层高的大楼，给你两个完全相同的玻璃棋子。&lt;BR&gt;假设从某一层开始，丢下玻璃棋子就会破碎。那么怎么利用手中的两颗棋子，&lt;BR&gt;用一种什么样的最优策略，知道这个临界的层高呢？ &lt;BR&gt;&lt;BR&gt;我的解法，保证所有最坏情况下，需要丢棋子的次数为一个有限次数。&lt;BR&gt;原理如下：&lt;BR&gt;首次丢棋子的位置是可以有变化的，第二次丢棋子则只能从最近的没有破的那一层向上依次丢，不然就得不到结果。&lt;BR&gt;假设极限次数限制为n，那么丢了m次棋子之后，剩余的层数必须等于n-m才能保证能在n次内找到答案。&lt;BR&gt;题目变成求这个n的最小值。&lt;BR&gt;用逆推法，100层是不用考虑的，如果99层丢没有破，答案就是100层。所以最坏情况下，最后一次丢棋子是在99层。&lt;BR&gt;倒数第二次要保证如果没有破，则只剩1层需要测试，如果破了，则也只有一层需要测试。&lt;BR&gt;倒数第二次只能是98层，其后需要测试的两层分别是99和97。&lt;BR&gt;倒数第三次就只能是96层，96层如果破了，有两层需要测试，向上就是98和99（或97），向下就是95，94。&lt;BR&gt;所以倒数第四次一定是93层。&lt;BR&gt;依次类推，最后得到一个逆序数列：&lt;BR&gt;99,98,96,93,89,84,78,71,63,54,44,33,21,8&lt;BR&gt;这个数列逆过来，就是丢棋子的正确顺序。&lt;BR&gt;代码如下：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;iostream&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;std;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;bool&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;throw_at(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i)&lt;BR&gt;&lt;IMG id=Codehighlighter1_62_146_Open_Image onclick="this.style.display='none'; Codehighlighter1_62_146_Open_Text.style.display='none'; Codehighlighter1_62_146_Closed_Image.style.display='inline'; Codehighlighter1_62_146_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_62_146_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_146_Closed_Text.style.display='none'; Codehighlighter1_62_146_Open_Image.style.display='inline'; Codehighlighter1_62_146_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_62_146_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_62_146_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;result&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;55&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;set&amp;nbsp;the&amp;nbsp;result&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;result&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;false&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;foo()&lt;BR&gt;&lt;IMG id=Codehighlighter1_158_812_Open_Image onclick="this.style.display='none'; Codehighlighter1_158_812_Open_Text.style.display='none'; Codehighlighter1_158_812_Closed_Image.style.display='inline'; Codehighlighter1_158_812_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_158_812_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_158_812_Closed_Text.style.display='none'; Codehighlighter1_158_812_Open_Image.style.display='inline'; Codehighlighter1_158_812_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_158_812_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_158_812_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_175_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_175_218_Open_Text.style.display='none'; Codehighlighter1_175_218_Closed_Image.style.display='inline'; Codehighlighter1_175_218_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_175_218_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_175_218_Closed_Text.style.display='none'; Codehighlighter1_175_218_Open_Image.style.display='inline'; Codehighlighter1_175_218_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;array[]&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_175_218_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_175_218_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;21&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;33&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;44&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;54&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;63&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;71&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;78&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;84&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;89&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;93&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;96&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;98&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;99&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;count&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(array)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(array[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;])&amp;nbsp;);&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;i&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_301_708_Open_Image onclick="this.style.display='none'; Codehighlighter1_301_708_Open_Text.style.display='none'; Codehighlighter1_301_708_Closed_Image.style.display='inline'; Codehighlighter1_301_708_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_301_708_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_301_708_Closed_Text.style.display='none'; Codehighlighter1_301_708_Open_Image.style.display='inline'; Codehighlighter1_301_708_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_301_708_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_301_708_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;bool&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;broken&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;throw_at(array[i]);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;count;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;broken&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_367_705_Open_Image onclick="this.style.display='none'; Codehighlighter1_367_705_Open_Text.style.display='none'; Codehighlighter1_367_705_Closed_Image.style.display='inline'; Codehighlighter1_367_705_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_367_705_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_367_705_Closed_Text.style.display='none'; Codehighlighter1_367_705_Open_Image.style.display='inline'; Codehighlighter1_367_705_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_367_705_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_367_705_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;j&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;array[i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&amp;nbsp;j&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;array[i];&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;j&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_420_587_Open_Image onclick="this.style.display='none'; Codehighlighter1_420_587_Open_Text.style.display='none'; Codehighlighter1_420_587_Closed_Image.style.display='inline'; Codehighlighter1_420_587_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_420_587_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_420_587_Closed_Text.style.display='none'; Codehighlighter1_420_587_Open_Image.style.display='inline'; Codehighlighter1_420_587_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_420_587_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_420_587_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;throw_at(j)&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_448_582_Open_Image onclick="this.style.display='none'; Codehighlighter1_448_582_Open_Text.style.display='none'; Codehighlighter1_448_582_Closed_Image.style.display='inline'; Codehighlighter1_448_582_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_448_582_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_448_582_Closed_Text.style.display='none'; Codehighlighter1_448_582_Open_Image.style.display='inline'; Codehighlighter1_448_582_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_448_582_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_448_582_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;count;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Throw&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;count&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;times.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Result&amp;nbsp;is:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;j&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;j;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Throw&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;count&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;times.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Result&amp;nbsp;is:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;array[i]&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Throw&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;count&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;times.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Result&amp;nbsp;is:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;100&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;100&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argv[])&lt;BR&gt;&lt;IMG id=Codehighlighter1_847_868_Open_Image onclick="this.style.display='none'; Codehighlighter1_847_868_Open_Text.style.display='none'; Codehighlighter1_847_868_Closed_Image.style.display='inline'; Codehighlighter1_847_868_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_847_868_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_847_868_Closed_Text.style.display='none'; Codehighlighter1_847_868_Open_Image.style.display='inline'; Codehighlighter1_847_868_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_847_868_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_847_868_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foo();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blog.vckbase.com/panic/aggbug/23399.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>CMonthCalCtrl的一个BUG</title><link>http://blog.vckbase.com/panic/archive/2006/12/06/23375.html</link><pubDate>Wed, 06 Dec 2006 03:38:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/12/06/23375.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/23375.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/12/06/23375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/23375.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/23375.html</trackback:ping><description>&lt;P&gt;环境：win2k pro, vc6.0 sp5&lt;BR&gt;bug描述：&lt;BR&gt;CMonthCalCtrl::GetCurSel函数的返回值是错误的。&lt;BR&gt;&lt;BR&gt;测试代码：&lt;BR&gt;//CMonthCalCtrl m_c; //定义在某处。&lt;BR&gt;//当用户选择了不同的日期后&lt;BR&gt;CTime t;&lt;BR&gt;m_c.GetCurSel(t);&lt;BR&gt;CString s = t.Format( "%A, %B %d, %Y" );&lt;BR&gt;//之后s的值和用户选择的数值相去甚远。&lt;BR&gt;&lt;BR&gt;bug跟踪：&lt;BR&gt;通过简单的跟踪，发现问题出在控件本身对消息的响应上，在winctrl5.cpp中：&lt;BR&gt;BOOL CMonthCalCtrl::GetCurSel(CTime&amp;amp; refTime) const&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;ASSERT(::IsWindow(m_hWnd));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// can't use this method on multiple selection controls&lt;BR&gt;&amp;nbsp;ASSERT(!(GetStyle() &amp;amp; MCS_MULTISELECT));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;SYSTEMTIME sysTime;&lt;BR&gt;&amp;nbsp;BOOL bResult = (BOOL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM) &amp;amp;sysTime); &lt;BR&gt;//这个消息返回后，sysTime的wMinute和wSecond成员的数值是错误的。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if (bResult)&lt;BR&gt;&amp;nbsp;&amp;nbsp;refTime = CTime(sysTime);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;return bResult;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;解决方法：自己发消息，然后修正sysTime的对应成员。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/panic/aggbug/23375.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>从一个小问题衍生的方法－－三进制数</title><link>http://blog.vckbase.com/panic/archive/2006/10/11/22727.html</link><pubDate>Wed, 11 Oct 2006 11:02:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/10/11/22727.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/22727.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/10/11/22727.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/22727.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/22727.html</trackback:ping><description>&lt;P&gt;从一个小问题衍生的方法－－三进制数&lt;/P&gt;
&lt;P&gt;作者： &lt;a title="Panic" href="http://blog.vckbase.com/panic/" &gt;Panic&lt;/a&gt; 2006年10月11日&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;有一个很久以前（可能有数百年）的问题，是这样：&lt;/P&gt;
&lt;P&gt;一个重40磅的砝码，不小心摔成了4块，结果这4块刚好都是整数，而且可以用天平称量1～40以内的任何重量。请问这4块的重量分别是多少。&lt;/P&gt;
&lt;P&gt;问题很好分析，天平的特性是，砝码可以放置在两边。也就是说，一个1磅的砝码，可以放在右侧作为砝码，也可以放在左侧作为称量物，放在左侧则最终的称量结果要减去砝码重量。&lt;/P&gt;
&lt;P&gt;我们现在考虑只有两个砝码的情况，其中一个砝码是1磅，另外一个假设是2磅。那么称量情况是这样：&lt;/P&gt;
&lt;P&gt;1磅砝码&amp;nbsp;&amp;nbsp;&amp;nbsp; 2磅砝码&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 称量的重量&lt;BR&gt;右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3磅&lt;BR&gt;不放&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2磅&lt;BR&gt;右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不放&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1磅&lt;BR&gt;左侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1磅&lt;/P&gt;
&lt;P&gt;从这个表可以看出，当大的砝码是2磅的时候，砝码分置两侧，并不能得到一个新的称量结果，所以大的砝码至少应该有3磅，结果变成：&lt;/P&gt;
&lt;P&gt;1磅砝码&amp;nbsp;&amp;nbsp;&amp;nbsp; 3磅砝码&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 称量的重量&lt;BR&gt;右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4磅&lt;BR&gt;不放&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3磅&lt;BR&gt;右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不放&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1磅&lt;BR&gt;左侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 右侧&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2磅&lt;/P&gt;
&lt;P&gt;两颗砝码，可以称量4种重量。用大于3磅的砝码也可以称量4种重量，但是那样的话结果就不连续了。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;现在把这两个砝码作为一个组合，加入更大的第三颗砝码，那么为了同样满足砝码分置两侧得到不同结果，第三颗砝码的重量应该是：2&amp;#215;两颗之和+1，也就是9磅。然后利用前两颗的拆分交替，就可以得到1～13的任何重量。&lt;/P&gt;
&lt;P&gt;同样的可以轻易计算出第三颗砝码是 13&amp;#215;2+1 = 27磅。&lt;/P&gt;
&lt;P&gt;这样，1，3，9，27，4颗砝码组成了一个以3为倍率的等比数列。这4颗砝码可以称量1～40之间的任何整数重量。&lt;/P&gt;
&lt;P&gt;回到最初的问题，我们可以抽象为：用4个位，表达至少40个不同的量。而考虑到砝码有放在左侧，右侧和完全不使用三种状态，这其实是个三进制数，一个有4位的三进制数。&lt;/P&gt;
&lt;P&gt;4位三进制数能够表达的范围是81，在天平的问题中，称量物放在左侧和右侧可以认为是两种不同的结果（或者说是符号位），而称量物也没有放置（或者说重量为0）也算一种情况，刚好造成81种结果。&lt;/P&gt;
&lt;P&gt;这个问题到此就完整的结束了。&lt;/P&gt;
&lt;P&gt;之所以会考虑这个问题，是因为我在设计一个单片机电路的时候，无意中利用到单片机口线的三种状态。&lt;/P&gt;
&lt;P&gt;三种状态就表达了一个三进制位，这样利用7条口线，就可以表达3^7 = 2187种状态，这个数字已经超过了11bit的二进制位(2048)，利用这个特性可以用更少的口线，实现更多的功能，更有效的利用单片机有限的资源。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/panic/aggbug/22727.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>旧事重提，反转一个字节的算法讨论</title><link>http://blog.vckbase.com/panic/archive/2006/09/06/22310.html</link><pubDate>Wed, 06 Sep 2006 08:17:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/09/06/22310.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/22310.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/09/06/22310.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/22310.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/22310.html</trackback:ping><description>&lt;P&gt;作者： &lt;a title="Panic" HREF="/panic/" &gt;Panic&lt;/a&gt; 2006年9月6日&lt;BR&gt;&lt;BR&gt;很久以前发过一个相关的随笔：&lt;!--StartFragment --&gt;&amp;nbsp;&lt;A class=singleposttitle id=viewpost1_TitleUrl HREF="/panic/archive/2005/06/11/6389.html"&gt;反转一个字节的算法&lt;/A&gt;&lt;BR&gt;以及相关的效率探讨：&lt;!--StartFragment --&gt; &lt;A class=singleposttitle id=viewpost1_TitleUrl HREF="/panic/archive/2005/06/13/6509.html"&gt;效率的边界－－几种反转字节算法分析&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;昨天 &lt;A href="http://blog.vckbase.com/bruceteen"&gt;&lt;a title="" HREF="/bruceteen/" target="_blank"&gt;周星星&lt;/a&gt;&lt;/A&gt; 旧事重提，又引发了对这个简单问题的讨论，相关的东西以前已经讨论了很多了，这里不再重复，只提供两个新的算法：&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;首先是周星星的新算法：&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse8(&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;c&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_42_199_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_199_Open_Text.style.display='none'; Codehighlighter1_42_199_Closed_Image.style.display='inline'; Codehighlighter1_42_199_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_42_199_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_199_Closed_Text.style.display='none'; Codehighlighter1_42_199_Open_Image.style.display='inline'; Codehighlighter1_42_199_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_42_199_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_42_199_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x55&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xAA&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x33&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xCC&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;c;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;经过测试，这是目前在32位环境，除查表法之外的最高效算法。&lt;BR&gt;&lt;BR&gt;我也尝试了一下，要超越这个算法的效率的确很难，几经周折也没有能够成功。不过这个过程中，考虑了另外一个算法，需要64位环境的支持，代码如下：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;typedef&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;long&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;U_INT64;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;64位环境。long应该是64bit长度。&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;如果有更适合的类型，替换这个typedef即可。&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;typedef&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;U_INT8;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;U_INT8&amp;nbsp;reverse64(&amp;nbsp;U_INT8&amp;nbsp;C&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_143_310_Open_Image onclick="this.style.display='none'; Codehighlighter1_143_310_Open_Text.style.display='none'; Codehighlighter1_143_310_Closed_Image.style.display='inline'; Codehighlighter1_143_310_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_143_310_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_143_310_Closed_Text.style.display='none'; Codehighlighter1_143_310_Open_Image.style.display='inline'; Codehighlighter1_143_310_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_143_310_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_143_310_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;C;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF7B3D591E6A2C480&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT8&amp;nbsp;result&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;result;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;这个算法的本质还是查表法，但是利用64bit变量代替了表，利用移位代替了查表过程中的寻址。&lt;BR&gt;理论上这个算法应该有更高的效率，尽管仍然无法超越原始的查表法。&lt;BR&gt;&lt;BR&gt;但是因为我没有64位的编译环境和运行环境，所以在此恳请有条件的朋友帮忙测试一下这两个代码在64位环境下的表现，参考的测试代码如下：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;typedef&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;long&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;U_INT64;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;typedef&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;U_INT8;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;U_INT8&amp;nbsp;reverse64(&amp;nbsp;U_INT8&amp;nbsp;C&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_91_258_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_258_Open_Text.style.display='none'; Codehighlighter1_91_258_Closed_Image.style.display='inline'; Codehighlighter1_91_258_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_91_258_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_258_Closed_Text.style.display='none'; Codehighlighter1_91_258_Open_Image.style.display='inline'; Codehighlighter1_91_258_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_91_258_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_91_258_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;C;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF7B3D591E6A2C480&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT8&amp;nbsp;result&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;(c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;result;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;U_INT8&amp;nbsp;reverse8(&amp;nbsp;U_INT8&amp;nbsp;c&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_289_446_Open_Image onclick="this.style.display='none'; Codehighlighter1_289_446_Open_Text.style.display='none'; Codehighlighter1_289_446_Closed_Image.style.display='inline'; Codehighlighter1_289_446_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_289_446_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_289_446_Closed_Text.style.display='none'; Codehighlighter1_289_446_Open_Image.style.display='inline'; Codehighlighter1_289_446_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_289_446_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_289_446_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x55&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xAA&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x33&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xCC&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x0F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xF0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;c;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;效率测试代码：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;iostream&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;std;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;inline&amp;nbsp;U_INT64&amp;nbsp;GetCycleCount()&lt;BR&gt;&lt;IMG id=Codehighlighter1_531_564_Open_Image onclick="this.style.display='none'; Codehighlighter1_531_564_Open_Text.style.display='none'; Codehighlighter1_531_564_Closed_Image.style.display='inline'; Codehighlighter1_531_564_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_531_564_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_531_564_Closed_Text.style.display='none'; Codehighlighter1_531_564_Open_Image.style.display='inline'; Codehighlighter1_531_564_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_531_564_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_531_564_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm&amp;nbsp;RDTSC&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;获取CPU时间戳&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argv[])&lt;BR&gt;&lt;IMG id=Codehighlighter1_600_1118_Open_Image onclick="this.style.display='none'; Codehighlighter1_600_1118_Open_Text.style.display='none'; Codehighlighter1_600_1118_Closed_Image.style.display='inline'; Codehighlighter1_600_1118_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_600_1118_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_600_1118_Closed_Text.style.display='none'; Codehighlighter1_600_1118_Open_Image.style.display='inline'; Codehighlighter1_600_1118_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_600_1118_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_600_1118_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,n&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;10000&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT8&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;t1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetCycleCount();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;n;&amp;nbsp;i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse64(i);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;t2&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetCycleCount();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;n;&amp;nbsp;i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse8(i);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;U_INT64&amp;nbsp;t3&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetCycleCount();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;T1&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;U_INT64((t2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;t1)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;n)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;T2&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;U_INT64((t3&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;t2)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;n)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp; &amp;nbsp;C&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;输出c是为了避免编译器优化。&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;由于对64位环境近乎无知，所以代码可能无法直接编译运行，仅供参考。&lt;BR&gt;谢谢合作:)&lt;img src ="http://blog.vckbase.com/panic/aggbug/22310.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>奇怪的代码？</title><link>http://blog.vckbase.com/panic/archive/2006/07/28/21570.html</link><pubDate>Fri, 28 Jul 2006 09:11:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/07/28/21570.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/21570.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/07/28/21570.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/21570.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/21570.html</trackback:ping><description>作者： &lt;A title=Panic HREF="/panic/"&gt;&lt;a title="Panic" href="http://blog.vckbase.com/panic/" &gt;Panic&lt;/a&gt;&lt;/A&gt; 2006年7月28日&lt;BR&gt;&lt;BR&gt;第一个：&lt;BR&gt;&lt;BR&gt;int i = 0;&lt;BR&gt;i.~i();&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;第二个：&lt;BR&gt;&lt;BR&gt;int i = 0; int j = 0;&lt;BR&gt;i.~j();&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;第三个：&lt;BR&gt;&lt;BR&gt;~int();&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;第四个：&lt;BR&gt;&lt;BR&gt;~0();&lt;BR&gt;&lt;BR&gt;第五个：&lt;BR&gt;&lt;BR&gt;0()()()()()();&lt;BR&gt;&lt;BR&gt;这些都是合法的代码么？^_^&lt;img src ="http://blog.vckbase.com/panic/aggbug/21570.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Panic</dc:creator><title>一个很巧妙的错误，欺骗编译器</title><link>http://blog.vckbase.com/panic/archive/2006/07/27/21547.html</link><pubDate>Thu, 27 Jul 2006 07:21:00 GMT</pubDate><guid>http://blog.vckbase.com/panic/archive/2006/07/27/21547.html</guid><wfw:comment>http://blog.vckbase.com/panic/comments/21547.html</wfw:comment><comments>http://blog.vckbase.com/panic/archive/2006/07/27/21547.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/panic/comments/commentRss/21547.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/panic/services/trackbacks/21547.html</trackback:ping><description>&lt;P&gt;一个很巧妙的错误，欺骗编译器。&lt;/P&gt;
&lt;P&gt;作者： &lt;A title=Panic href="/panic/"&gt;&lt;A title=Panic HREF="/panic/"&gt;&lt;a title="Panic" href="http://blog.vckbase.com/panic/" &gt;Panic&lt;/a&gt;&lt;/A&gt;&lt;/A&gt; 2006年7月27日&lt;/P&gt;
&lt;P&gt;很久没碰到什么有趣的问题了，今天看到一个，特写随笔一篇以作留念:P&lt;/P&gt;
&lt;P&gt;问题的来源：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;一种让另外的类对本类成员只读，本类对本类成员可读写的方法。 [所有相关帖子]&lt;/P&gt;
&lt;P&gt;例子&lt;BR&gt;//a.h&lt;BR&gt;class a&lt;BR&gt;{&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; void test();&lt;BR&gt;#ifndef A_CPP&lt;BR&gt;const&lt;BR&gt;#endif&lt;BR&gt;&amp;nbsp;&amp;nbsp; int b;&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;//a.cpp&lt;BR&gt;#define A_CPP&lt;BR&gt;#include "a.h"&lt;BR&gt;#undef A_CPP&lt;/P&gt;
&lt;P&gt;void a::test&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; b = 12; //可以写&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;//b.cpp&lt;BR&gt;#include "a.h"&lt;BR&gt;void b()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; a _a;&lt;BR&gt;&amp;nbsp;&amp;nbsp; _a.b = 12;//编译错误 不可写&lt;BR&gt;}&lt;BR&gt;书童 xulingfv 发表于 2006-7-27 10:46:09&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;周星星的代码：&lt;/P&gt;
&lt;P&gt;// a.hpp&lt;BR&gt;struct foo&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foo();&lt;BR&gt;#ifdef SOMETHING&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int a;&lt;BR&gt;#endif&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int b;&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;// a.cpp&lt;BR&gt;#define SOMETHING&lt;BR&gt;#include "a.hpp"&lt;BR&gt;#undef SOMETHING&lt;BR&gt;foo::foo()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = 2;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;// main.cpp&lt;BR&gt;#include "a.hpp"&lt;BR&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;int main()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foo test;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 理论上讲，a.cpp和main.cpp中的foo定义不同，是不同的类型，所以应当报foo()未实现，但实际上却正确&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; test.b &amp;lt;&amp;lt; std::endl; // 输出1&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;上面的代码，有兴趣的可以试试，这里只说明问题：&lt;/P&gt;
&lt;P&gt;首先澄清几件事：&lt;/P&gt;
&lt;P&gt;1，对编译器来说，一个函数定义在什么地方并不重要，无论foo::foo()定义在哪里，它都是foo类型的构造函数。&lt;/P&gt;
&lt;P&gt;2，对链接器来说，区分不同函数（或者类型）的唯一方法是这个函数最后生成的符号名字，如果存在两个相同的符号，就会报重定义的错，而反之，无论这个符号来自何处，链接器都会把这个符号和对应的函数代码链接在一起。&lt;/P&gt;
&lt;P&gt;3，对同一个编译单元，或者说，同一个.C/.CPP文件，里面的每个定义只会生成一份OBJ代码，模板则会为每个类型生成一份代码－如果可能的话。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;这几件事情澄清之后，其实上面的代码就没有任何问题了，简单的说明一下：&lt;/P&gt;
&lt;P&gt;第一段代码：&lt;/P&gt;
&lt;P&gt;a.cpp和b.cpp中的class a，毫无疑问并非同一个类型，但是利用#define和#undefine，强制生成了完全相同的类型名字。&lt;/P&gt;
&lt;P&gt;为了区分，这里把a.cpp中的class a称作a1，b.cpp中的称作a2。&lt;/P&gt;
&lt;P&gt;当编译a.cpp的时候，编译器使用的是含有int b的定义，这时候void a::test是void a1::test。&lt;/P&gt;
&lt;P&gt;而编译b.cpp的时候使用的是含有const int b的定义这时候a _a;其实是a2 _a;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;这两个类型中因为只存在一个成员是否是const的差别，一般情况下具有相同的内存布局，所以成员函数（包括构造函数）的调用不会出现太大的问题，但是实际上，这是两套不同的类型生硬的捆绑在一起的结果。&lt;/P&gt;
&lt;P&gt;假如通过a2来调用test函数，由于编译器为a1生成的void a1::test和void a2::test的符号完全一致，于是链接器很自然的把void a1::test嫁接在了a2的调用点上，造成了a1和a2难以区分的假象。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;第二段代码：&lt;/P&gt;
&lt;P&gt;其实和第一段完全一样，foo::foo()作为foo1版本的构造函数，它的链接符号和int main()中的foo2版本完全一样，导致链接器错误的把这个函数嫁接在了foo2的构造过程中。&lt;/P&gt;
&lt;P&gt;不过这个例子中，foo1和foo2的内存布局不同，所以由此引发的内存越界访问的错误可以通过一个简单的方法测试：&lt;/P&gt;
&lt;P&gt;写如下代码：&lt;/P&gt;
&lt;P&gt;#include "a.hpp"&lt;BR&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;int main()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int a;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foo test;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; std::endl; // 输出a&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; test.b &amp;lt;&amp;lt; std::endl; // 输出1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; std::endl; // 输出b&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;在一般的实现中a和b其中之一会输出数值2，也就是foo::foo()中的第二个赋值。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;值得注意的是，在debug版本下这种对编译器的欺骗很可能不会带来实质性的错误，但是经由release版本的优化之后，两种类型定义的差别会显著增大，一般会导致运行期错误。&lt;/P&gt;
&lt;P&gt;事实上这种错误以前就出现过，在使用了第三方代码库的项目中，项目自身定义了某个函数而忘记实现，恰好库中也有一个同名但功能却大相径庭的函数，链接器忠实的把错误的函数链接在了用户的调用点，引起一个难以发现和修改的bug。&lt;/P&gt;
&lt;P&gt;我们在代码中使用各种命名规范区分名称，使用namespace隔离潜在同名空间，从而最大程度的避免同名函数/类型的问题。而以这种错误为技巧来制造看似有效的手法，会给工程留下隐患。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;写到这里，我忽然对早上和释雪探讨的一个问题有了一些认识，问题是这样的：&lt;/P&gt;
&lt;P&gt;一个模板&lt;BR&gt;//a.h&lt;BR&gt;template&amp;lt;class T&amp;gt;&lt;BR&gt;class Test&lt;BR&gt;{&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;假如在两个CPP文件中分别以相同的模板参数做了不同的特化（比如写了两个Test&amp;lt;int&amp;gt;的特化代码），会冲突么？答案是不会。而实际使用的特化版本以最先编译的那个单元为准。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;要解释这个问题，需要明白另外一件事，就是&amp;#8220;模板的代码，在使用的地方必须是可见的&amp;#8221;这条规则。&lt;/P&gt;
&lt;P&gt;C++ ISO中并没有规定这种行为，那么是什么导致了编译器的这种限制呢？原因就是每个编译单元都不依赖其他单元完成编译，这样一来模板代码就找不到形成OBJ的时机。&lt;/P&gt;
&lt;P&gt;具体来说是这样：&lt;/P&gt;
&lt;P&gt;假如模板的所有实现代码都存在于某个CPP文件中，当这个CPP文件作为一个编译单元进行解析的时候，因为不知道模板究竟对哪些模板参数进行了实例化，所以也就无从生成OBJ文件。而对所有类型都生成实例在理论上是不可能的。&lt;/P&gt;
&lt;P&gt;而在使用了模板的地方，因为不知道模板的实际代码在哪里，也无从为模板生成OBJ文件。这样一来，模板的代码就完全没办法实现了。&lt;/P&gt;
&lt;P&gt;于是实际的编译器，应该是采取了这种策略，当编译到使用某个模板的时候，先检查这个模板实例化后生成的符号是否已经存在，如果不存在就根据代码生成实例，并且把符号记录，反之就直接关联已经存在的符号。&lt;/P&gt;
&lt;P&gt;由于编译单元的编译顺序完全是由使用者人为控制的，所以编译器自身无法获取首次实例化的时机，那唯一可行的办法就是在每个调用的地方都使得模板代码可见，这样一来无论哪个编译单元首先进行实例化，都可以顺利生成实例。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;这条规则有一个隐患是，规则要求的只是可见性，并不要求&amp;#8220;同一性&amp;#8221;，换句话说，你可以把模板代码写在头文件中，然后所有的使用者都去包含它。也可以把模板的实现代码写在每一个使用它的地方。&lt;/P&gt;
&lt;P&gt;如果你使用后一种方法，写在每个文件中的实现代码，可以是各不相同的，能够生成实例的那个版本是首先编译的那个版本。也就是说，程序最终生成的代码，是和编译顺序相关的。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;写了这么多，也不知道问题有没有说清楚。&lt;/P&gt;
&lt;P&gt;有兴趣的朋友可以写个代码测试下，不同的编译器也许还有不同的细节差异。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/panic/aggbug/21547.html" width = "1" height = "1" /&gt;</description></item></channel></rss>