A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© zsling 中级黑马   /  2014-12-18 13:00  /  833 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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代表的是什么,输出结果为什么不一样呢?

1 个回复

倒序浏览
     应该和int ,double之间不同的译码有关吧。就像你写的,我把double weight的值设的很较小时,输出结果都是0。但是当我把值设的很大时就会有输出。
     你pp虽然写的是%d 可是输出的是10,说明当要输出结构体时 printf("%d,%p", pp, &pp); ,并不是按照double的方式来输出,而是用另外一种方式输出(具体是什么我不知道),而用这种方式可能会使double weight值小时不会被读取(读取的是double的高位)。
     我是新手,以上是我的理解。如果不对,请不要吐槽,希望能一起进步。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马