有一个题目说的是如何不用加号来实现加法运算,看到了一个大牛的代码,顿时膜拜!废话不说,上思路。比如,int a =7, int b=8; 如何不用加号来计算a+b?代码如下:
<pre name="code" class="cpp">int Add(int a, int b)
{
char *c = (char *)a;
return (int) &c[b];
}
就是这么简单的两句代码。具体的意思就是:
1、首先将a转换为地址类型,即a=7,那么转换之后的就是0x00000007, 指针c就是指向该地址。
2、c[b]就是相当于平时数组中的取下标为b的元素的值,就是说c[b]=c+sizeof(char*)b。因为b等于8,所以c[b]的地址就是0x0000000f.
3、因为c是指针,所以c[b]指向的是0x0000000f地址内的值
有一个题目说的是如何不用加号来实现加法运算,看到了一个大牛的代码,顿时膜拜!废话不说,上思路。比如,int a =7, int b=8; 如何不用加号来计算a+b?代码如下:
<pre name="code" class="cpp">int Add(int a, int b)
{
char *c = (char *)a;
return (int) &c[b];
}