问题描述
所以我必须创建一个 add 方法,该方法将采用两个 16 位整数并在不使用算术运算符的情况下返回该结果。不幸的是,当输入 5 和 10 这样的两个数字时,它返回 0 而不是 15。我的代码有什么地方做错了吗?代码如下,用C语言完成
addition_subtraction_result add(uint16_t augend,uint16_t addend) {
addition_subtraction_result addition;
while (addend != 0){
int carry = augend & addend;
augend = augend ^ addend;
addend = carry << 1;
}
addition.overflow = false;
return addition;
}
如果您需要更多信息,请告诉我。谢谢!
解决方法
您返回 addition
(希望通过值)并且您唯一设置的是 addition.overflow = false;