黑马程序员技术交流社区
标题:
结构体输出结果问题
[打印本页]
作者:
zsling
时间:
2014-12-18 13:00
标题:
结构体输出结果问题
struct Person
{
int age;
char *name;
double weight;
} ;
struct Person pp = {10, "rose", 45.0};
printf("%d,%p", pp, &pp);
为什么pp的输出结果是10,如果把结构体中double weight写在int age之前,初始化后输出的结构并不是weight的数值,这样说pp代表的是什么,输出结果为什么不一样呢?
作者:
小孩你过来
时间:
2014-12-21 00:46
应该和int ,double之间不同的译码有关吧。就像你写的,我把double weight的值设的很较小时,输出结果都是0。但是当我把值设的很大时就会有输出。
你pp虽然写的是%d 可是输出的是10,说明当要输出结构体时 printf("%d,%p", pp, &pp); ,并不是按照double的方式来输出,而是用另外一种方式输出(具体是什么我不知道),而用这种方式可能会使double weight值小时不会被读取(读取的是double的高位)。
我是新手,以上是我的理解。如果不对,请不要吐槽,希望能一起进步。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2