前两天看到一篇文章是些如何不用+做加法的算法,其中有人提到可以这样实现:
int add(int a,int b){
char * c;
c = (char *) a;
return (int)&c[b];
}
理解了半天,现在做一下记录,防止自己忘记
将一个整形强制转化为指针,其实指针的指向的地址就是该整数的值,例如a是10的话那么c指向的地址就是0xa,使用数组下标其实相当于对原来的地址做加法操作,c[b]和*(c+b)是相同的操作,然后进行取操作就能返回a+b的结果。