读书人

*carry = result lt; n1 || result lt; n1

发布时间: 2012-02-24 16:30:39 作者: rapoo

*carry = result < n1 || result < n1; 是什么
/* Add two unsigned 32-bit integers, and calculate the carry out. */

static uint32
add32 (uint32 n1, uint32 n2, int *carry)
{
uint32 result = n1 + n2;

*carry = result < n1 || result < n1; //就是这句
return(result);
}

我觉得这句意思是把result <n1的结果和自己 与,然后赋值给carry,
这是什么意思呢,直接传就可以了,为什么还要与呢

[解决办法]
*carry = result < n1 || result < n1;
===============
输入错误了吧
应是
*carry = result < n1 || result < n2;

意思是如果两个数的和比其中一个小,则发生了溢出.
[解决办法]
估计是 这样
result < n1 || result < n2;//这句结果是个逻辑值
无论哪一个条件成立,则必定产生了一个溢出进位,那么就把这个进位(必定是1)给carry
若都不成立,则进位=0。

[解决办法]
carry 保存的是进位的值
(0或者1),结果依赖于那个*carry = result < n1 || result < n2;
可以用10进位加法即可
n1=8,n2=6;
result=4
*carry=1 进位
故结果为:1*10+4=14

读书人网 >C++

热点推荐