不使用加号运算符添加两个整数

UTH*_*012 2 c add

我在C语言中找到了一个源代码.我从这里开始:链接:

#include<stdio.h>
int main()
{
    int a,b,hasil;
    printf("Masukan integer pertama: ");
    scanf("%d",&a);
    printf("Masukan integer kedua: ");
    scanf("%d",&b);
    hasil = a - ~b -1;
    printf("Hasil tambah kedua-dua integer :%d",hasil);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

似乎,代码不使用"+"或"- -"操作添加这样两个整数.任何人都能告诉我,这项技术或概念是用什么的?

das*_*ght 6

这种"技术"是一种脑筋急转弯.就实际应用而言,它几乎没有用得:它所做的就是b在不使用一元减号的情况下以二进制补码计算负数:

-b == (~b + 1)
a+b == a - (-b) == a - (~b + 1) == a - ~b - 1;
Run Code Online (Sandbox Code Playgroud)