2017年9月18日月曜日

[日誌]C++ポインタアドレスを64bitで表示する。

ロベールC++教室をやっていたら、ポインタアドレスを表示させるところでこんなエラー
error: cast from ‘char*’ to ‘unsigned int’ loses precision [-fpermissive]
こちらと同じ症状だった。
http://d.hatena.ne.jp/taksei/20140208/1391834451


#include <stdint.h>

を付け加えて、

(uint64_t)

に置き換えて完了。"原因:64bit環境のアドレスを32bitにキャストしている"ということらしい。
#include <iostream>
#include <stdint.h> // インクルード必要
using namespace std;
int main()
{
    char a;
    char* p;
    p = &a;
    cout << " p = " << (uint64_t) p << endl
         << "&a = " << (uint64_t)&a << endl;
    return 0;
}

0 件のコメント:

コメントを投稿