﻿<?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++博客-Residence for sdfond-随笔分类-读书笔记</title><link>http://www.cppblog.com/sdfond/category/12446.html</link><description>世事洞明皆学问，人情练达即文章</description><language>zh-cn</language><lastBuildDate>Sun, 25 Apr 2010 06:30:21 GMT</lastBuildDate><pubDate>Sun, 25 Apr 2010 06:30:21 GMT</pubDate><ttl>60</ttl><item><title>精辟</title><link>http://www.cppblog.com/sdfond/archive/2010/03/18/109973.html</link><dc:creator>sdfond</dc:creator><author>sdfond</author><pubDate>Thu, 18 Mar 2010 04:35:00 GMT</pubDate><guid>http://www.cppblog.com/sdfond/archive/2010/03/18/109973.html</guid><wfw:comment>http://www.cppblog.com/sdfond/comments/109973.html</wfw:comment><comments>http://www.cppblog.com/sdfond/archive/2010/03/18/109973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sdfond/comments/commentRss/109973.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sdfond/services/trackbacks/109973.html</trackback:ping><description><![CDATA[If it's there and you can see it —— it's real<br>If it's not there and you can see it —— it's virtual<br>If it's there and you can't see it —— it's transparent<br>If it's not there and you can't see it —— you erased it!<br>  <img src ="http://www.cppblog.com/sdfond/aggbug/109973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sdfond/" target="_blank">sdfond</a> 2010-03-18 12:35 <a href="http://www.cppblog.com/sdfond/archive/2010/03/18/109973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于移位操作</title><link>http://www.cppblog.com/sdfond/archive/2009/12/03/102438.html</link><dc:creator>sdfond</dc:creator><author>sdfond</author><pubDate>Thu, 03 Dec 2009 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/sdfond/archive/2009/12/03/102438.html</guid><wfw:comment>http://www.cppblog.com/sdfond/comments/102438.html</wfw:comment><comments>http://www.cppblog.com/sdfond/archive/2009/12/03/102438.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/sdfond/comments/commentRss/102438.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sdfond/services/trackbacks/102438.html</trackback:ping><description><![CDATA[　　看CSAPP讲解移位操作的时候，突然想起了以前曾经遇到的一个诡异问题：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">,&nbsp;d&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;i&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;d);<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span></div>
<br>　　这里输出仍然是10。一直不理解为什么是这样，正常理解输出是0才对。后来到网上查阅了一下，原来在C99标准中规定如果移位操作的位数大于等于位宽那么结果是未定义的。这句话居然在K &amp; R的著作中就有提到，实在是牛。<br>　　这段代码实际执行的时候，据说硬件会自动对字长取模，因此可以认为值没有改变。当然，如果换一种写法：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;i);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br>　　这样输出就是零了，但是有编译警告，看来编译器的想法和一般的想法是一样的，呵呵。<br><br>   <img src ="http://www.cppblog.com/sdfond/aggbug/102438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sdfond/" target="_blank">sdfond</a> 2009-12-03 09:31 <a href="http://www.cppblog.com/sdfond/archive/2009/12/03/102438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始读CSAPP</title><link>http://www.cppblog.com/sdfond/archive/2009/11/30/102261.html</link><dc:creator>sdfond</dc:creator><author>sdfond</author><pubDate>Mon, 30 Nov 2009 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/sdfond/archive/2009/11/30/102261.html</guid><wfw:comment>http://www.cppblog.com/sdfond/comments/102261.html</wfw:comment><comments>http://www.cppblog.com/sdfond/archive/2009/11/30/102261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sdfond/comments/commentRss/102261.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sdfond/services/trackbacks/102261.html</trackback:ping><description><![CDATA[　　说来惭愧，这本书买了都一年了但是现在才开始看。看完第一章发现这的确是本不错的书。<br>　　这本书基本上涵盖了计算机专业的许多主干课程，包括计算机组成原理、操作系统、编译原理等等，这些课程重要且不是很好懂。虽然这些课程我已学过，但是现在回想起来有许多细节都忘记了。这本书把那些课程中的重要部分抽成若干章节讲述，对于我来说，是一种不错的回顾知识的方式。<br>　　书中强调说，学习计算机知识最重要的是动手实践。的确，那些纷杂的知识如果没有亲自验证，很难真正理解和记忆。可惜的是我在大学课堂上学习这些知识的时候，老师没有强调实验和知识的关联，更多时候我们像是在完成一项任务而已，并没有把它当成学习知识、理解知识必要的步骤。这也许不是课程设计者的初衷吧，不过现在发展成这样，确实是一种悲哀。<br><br> <img src ="http://www.cppblog.com/sdfond/aggbug/102261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sdfond/" target="_blank">sdfond</a> 2009-11-30 09:40 <a href="http://www.cppblog.com/sdfond/archive/2009/11/30/102261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>