读书人

C程序: 为什么printf中的最后一行改为

发布时间: 2012-03-31 13:13:26 作者: rapoo

C程序: 为什么printf中的最后一行改为 (&a.i)-(&a) 后,编译就会出错,哪位高手帮我解释说下,谢谢。
错误提示:: error C2230: '-' : indirection to different types

#include "stdio.h"

struct TestStruct1
{
char c1;
short s;
char c2;
int i;
};

void main()
{
struct TestStruct1 a;
printf("c1 %p, s %p, c2 %p, i %p \n",\
(unsigned int)(void *)&a.c1 - (unsigned int)(void *)&a,\
(unsigned int)(void *)&a.s - (unsigned int)(void *)&a,\
(unsigned int)(void *)&a.c2 - (unsigned int)(void *)&a,\
(unsigned int)(void *)&a.i - (unsigned int)(void *)&a); // 为什么这一行改为 (&a.i)-(&a) 就为出错 ???

}


[解决办法]
两个不同的类型,不知道怎么减。

读书人网 >C语言

热点推荐