我和一个朋友正在用脑筋急转弯,我不知道如何解决这个问题。我的假设是可以使用一些按位运算符,但不确定。
发布于 2008-12-13 18:27:20
在C中,使用按位运算符:
#include<stdio.h>
int add(int x, int y) {
int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a);
return b;
}
int main( void ){
printf( "2 + 3 = %d", add(2,3));
return 0;
}异或(x ^ y)是不带进位的加法。(x & y)是每一位的进位输出。(x & y) << 1是每一位的进位输入。
循环不断增加进位,直到所有位的进位都为零。
发布于 2008-12-14 06:57:20
int add(int a, int b) {
const char *c=0;
return &(&c[a])[b];
}发布于 2008-12-13 19:09:20
不是吗?
int add(int a, int b)
{
return -(-a) - (-b);
}https://stackoverflow.com/questions/365522
复制相似问题