黑马程序员技术交流社区

标题: 结构体输出结果问题 [打印本页]

作者: 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