tôi đã thử với mã sau, nhưng tôi không thể hiểu tại sao nó cho tôi câu trả lời sai. tôi đang tính toán phần bổ sung của 2 và bổ sung thêm một số khác.Trừ hai số mà không sử dụng toán tử '-'
#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() 'là đem lại cho bạn kết quả sai vì' Add()' là sai. Logic trong 'sub()' là tốt. – NullUserException
Có gì sai với '-'? Có gì sai với 'a + b'? –
Điều này cũng mang lại những kỷ niệm. Giáo sư của chúng tôi sẽ không cho phép chúng tôi sử dụng vòng lặp hoặc câu lệnh 'if' cho vấn đề đó. – NullUserException