oubitch
oubitch
2016-11-23 14:21
采纳率: 50%
浏览 891
已采纳

请教一下大神指针类型转换问题

 #include<iostream>
using namespace std;
int main()
{
    float a = 12.7;
    int * pr=(int *)&a;
    cout<<*pr<<", "<<pr<<", "<<&pr<<endl;
    return 0;
}

求解怎样让*pr输出12??上面的代码编译器输出的是1095447347
万分感激!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Super_cpp
    Super_cpp 2016-11-23 15:04
    已采纳

    个人愚见:
    float *pr = &a;
    cout << (int)(*pr) << ", " << pr << ", " << &pr << endl;
    按照楼主的方式int *pr=(int *)&a;因为是直接转换的指针类型,而浮点数和整形存储方式不一样,这样可能永远都不能输出12.
    只是我认为。

    点赞 评论
  • youyu157
    youyu157 2016-11-23 14:29

    cout<<(int )*pr<<", "<<pr<<", "<<&pr<<endl;

    点赞 评论
  • qq_32200421
    qq_32200421 2016-11-23 14:37

    可能是运算符优先级的问题,小括号优先级最高,其次是*,最后是取地址,int * pr=(int *)(&a);这样试试

    点赞 评论

相关推荐