*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