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

问题描述

所以我必须创建一个 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;