51C语言能进行16位的加减吗?

2020-02-05 08:58发布

请问想比较两个数的大小,但是是16位的,可以这样吗?下面的x-y能得到有效值吗?
int a,b,c,d;
unsigned long x,y;
.
.
.
x=(a<<8)+b;
y=(c<<8)+d;
if(x-y)
{
......
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
winterw
1楼-- · 2020-02-05 11:46
你用keil或其他IDE的模拟仿真测试一下就知道了
cyzc2008
2楼-- · 2020-02-05 14:51
winterw 发表于 2012-6-29 09:25
你用keil或其他IDE的模拟仿真测试一下就知道了

现在不是很方便,所以发帖问问。
qinxg
3楼-- · 2020-02-05 18:37
可以. 不过a,c应该用long变量, 否则 a<<8 会溢出的.  int为16位,long为32位
cyzc2008
4楼-- · 2020-02-05 23:19
 精彩回答 2  元偷偷看……
yyts
5楼-- · 2020-02-06 02:50
无符号型的相减不可以,你直接">","<"比较吧
babytaomail
6楼-- · 2020-02-06 05:37
cyzc2008 发表于 2012-6-29 09:41
哦,谢谢,不过一个16位,一个32位,左移8位,应该不会溢出吧?

一定会溢出的哦。必须要强制转换类型,比如上面的写成这样:x=((long)a<<8)+b;

一周热门 更多>