标题:int与unsigned相加
只看楼主
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
得分:0 
回复 18楼 BlueGuy
因为你用的机器cpu是小端存储(应该是x86的),你如果用一台大端的存储的会得到跟int一样的结果。

身体是玩命的本钱
2010-06-10 00:23
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
得分:0 
回复 14楼 广陵绝唱
我觉得它问的是i+j这个表达式的值,c里每个表达式都会有一个值,在这里i+j这个表达式的值就是无符号型。

而且对加法和减法运算来说有符号型和无符号型没有任何区别(用的都是同一个指令,底层不对他们区分),它只对跳转指令有意义(乘和除除外)。

身体是玩命的本钱
2010-06-10 00:30
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
得分:0 
以下是引用zhddragon在2010-6-10 00:23:36的发言:

因为你用的机器cpu是小端存储(应该是x86的),你如果用一台大端的存储的会得到跟int一样的结果。
抱歉。没看清楚就发言了。

那个-1跟255通过那样的转换后结果不同是因为你把char 强制转换成int后字节数变大了,所以编译器会对那个数进行符号扩展,那多出来的高位全变成1了,而unsigned char的时候进行的是零扩展,多出来的为全是0

另外那个readInt函数的确是存在着大小端问题。

身体是玩命的本钱
2010-06-10 00:58
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
回复 23楼 zhddragon
微机原理学的不好, 现在想重新拾起了。

我就是真命天子,顺我者生,逆我者死!
2010-06-10 08:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309596-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.191316 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved