, я попытался использовать следующий код, но я не понимаю, почему он дает мне неправильный ответ. Я вычисляю дополнение 2 и добавляю с другим номером.Вычитая два числа без использования оператора «-»
#include <stdio.h>
int add(int a, int b) {
while (a) {
a = (a & b) << 1;
b = a^b;
}
return b;
}
int sub(int a, int b) // add a with b's 2's complement.
{
return (add(a, add(~b, 1)));
}
int main() {
int a, b, res;
a = 3, b = 1;
res = sub(a, b);
printf("%d\n", res);
return 0;
}
'югу()' дает вам неправильный результат, потому что 'добавить()' неправильно. Логика в 'sub()' отлично. – NullUserException
Что не так с '-'? Что случилось с 'a + b'? –
Это также возвращает воспоминания. Наш профессор не позволял нам использовать петли или заявления «если» в этом отношении. – NullUserException