Add() 方法不会 return 正确的结果

Add() method won't return correct result

所以我必须制作一个 add 方法,该方法将采用两个 16 位整数和 return 结果,而不使用算术运算符。不幸的是,当输入 5 和 10 这样的两个数字时,它 return 是 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;
}

如果您需要更多信息,请告诉我。谢谢!

您 return addition(希望按值)并且您唯一设置的是 addition.overflow = false;