<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<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://www.jizhuomi.com/software/303.html</link><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><pubDate>Fri, 22 Feb 2013 20:51:16 +0800</pubDate><item><title>Re:值得你研究的：有符号数和无符号数的强制类型转换</title><author> (tsukikage)</author><link>http://www.jizhuomi.com/software/303.html#cmt11646</link><pubDate>Fri, 19 Feb 2016 15:22:44 +0800</pubDate><guid>http://www.jizhuomi.com/software/303.html#cmt11646</guid><description><![CDATA[感觉符号数其实挺无辜的。<br/>首先明明是-1，非被看成0xff来用。<br/>还被做了一个有溢出的左移运算。<br/>结果结论就是符号数转换，不安全。。。<br/><br/>如果左移不溢出，结果不会有问题的吧。。<br/><br/>而且，抛除溢出部分，对于char类型来说，无论是有符号，还是无符号来说，结果都是0xff吧。<br/><br/>注，假定编译器char为signed int]]></description></item><item><title>Re:值得你研究的：有符号数和无符号数的强制类型转换</title><author> (菜鸟来袭)</author><link>http://www.jizhuomi.com/software/303.html#cmt3822</link><pubDate>Mon, 23 Jun 2014 10:42:52 +0800</pubDate><guid>http://www.jizhuomi.com/software/303.html#cmt3822</guid><description><![CDATA[感觉这只是针对MS VC++编译器来说的]]></description></item><item><title>Re:值得你研究的：有符号数和无符号数的强制类型转换</title><author> (yueyixing11)</author><link>http://www.jizhuomi.com/software/303.html#cmt3751</link><pubDate>Wed, 21 May 2014 16:57:15 +0800</pubDate><guid>http://www.jizhuomi.com/software/303.html#cmt3751</guid><description><![CDATA[第一：char不一定是有符号，标准规定这是编译器相关的，所以第一个的例子最好加上signed.第二：给signed char赋值0xFF，是有问题的，标准规定unsigned类型的溢出是取模，对于signed类型的溢出是未定义的，所以这个在不同的编译器上可能会出现不同的值。对于楼主所用的编译器来说是是直接把0xFF赋给了ch[6],然后因为是带符号的，所以把0xFF按照负数的补码来解释，就是-1.<br/>第三：只是分析了编译器的实现，没有说为什么会这样操作。<br/>其实，这里涉及了整型提升和符号扩展两个问题。抛开编译器的实现细节，对于第一个例子来说，signed char类型的ch[7]先被提升为int，然后乘以256，最后加上上面得出的-1（此时也会被提升为整型,signed char的-1变为int类型的-1,你看一下他们的补码就知道为什么必须进行符号扩展了），所以0xF*128+(-1)=3839即0xEFF。<blockquote><div class="quote quote3"><div class="quote-title">yueyixing11 于 2014-5-21 17:00:15 回复</div>更正一下，最后应该是0xF*256+(-1)=3839即0xEFF<br/><br/></div></blockquote>]]></description></item><item><title>Re:值得你研究的：有符号数和无符号数的强制类型转换</title><author>888668729@qq.com (合肥做网站公司)</author><link>http://www.jizhuomi.com/software/303.html#cmt2717</link><pubDate>Sun, 10 Mar 2013 18:46:53 +0800</pubDate><guid>http://www.jizhuomi.com/software/303.html#cmt2717</guid><description><![CDATA[比较深奥，看不懂啊！]]></description></item><item><title>Re:值得你研究的：有符号数和无符号数的强制类型转换</title><author>5623658@qq.com (入门啦)</author><link>http://www.jizhuomi.com/software/303.html#cmt2714</link><pubDate>Sat, 09 Mar 2013 19:26:24 +0800</pubDate><guid>http://www.jizhuomi.com/software/303.html#cmt2714</guid><description><![CDATA[沙发我来了。]]></description></item></channel></rss>
