#include <stdio.h>
#include <stdlib.h>
main()
{
char c,*cp1=&c,*cp2;
int i,*ip1=&i,*ip2;
double d,*dp1=&d,*dp2;
cp2=cp1+1;
ip2=ip1+1;
dp2=dp1+1;
printf("%d,%d,%d\n",cp2-cp1,ip2-ip1,dp2-dp1);
printf("%d,%d,%d\n",(int)cp2-(int)cp1,(int)ip2-(int)ip1,(int)dp2-(int)dp1);
}
我用code::blocks编译器编译的,结果是:
1,1,1
1,4,8
为什么结果不是:
1,1,1,
1,2,8呢?
还有为什么(int)cp2-(int)cp1表示的是地址的运算呢? |