2017-09-28 7 views
0
#include<stdio.h> 

int main() 
{ 
    float a=3.14; 
    char *j; 
    j = (char*)&a; 
    printf("%d\n", *j); 
    return 0; 
} 

このコードを実行すると、 '-61'という出力が得られます。 float a = 3.14をfloat a = 3に変更すると、結果は '0'になります。int a = 3に変更すると、出力として '3'が表示されます。なぜこれが起こっているのか理解できません。理由。 ありがとうございます。Cのポインタを理解する

+9

これは、ポインタの問題ではありません。これは、いわゆる内部構造のようなものです。ポインタを理解したいだけなら、より一般的な何かをしてください。 (「従来の」とはどういう意味ですか?あなたがXへのポインタを使用している場合は、そのポインタをXへのポインタとして扱います。ここには、ポインタへのポインタがあります。 'double'を指すように設定し、' int'として '%d'を使用しています。それはまあまあです。) –

+0

これは、異なるタイプのメモリレイアウトと関係しています。 –

+5

ここにあります類推大文字のSを描く。その上半分を見てみよう。それは文字cのように見えることに注意してください。今度は大文字のRを描きます。その上半分を見てください。それは文字Dのように見えることに注意してください。最後に大文字Aを描きます。上半分は三角形(おそらくギリシャ文字デルタ)のように見えます。文字(S、R、A)と上半分(C、D、Delta)を見ると文字を文字と考えると意味がありませんが、形を見ると完璧な意味があります。同様に、あなたの例は数字の点では意味をなさないが、ビットと関係がある。 –

答えて

-1

まずはヘルパーが必要です。この方法を試してください。

#include<stdio.h> 

int main() 
{ 
    float a = 3.14; 
    char j = (char)a; 
    char *k = (char*)&j; 
    printf("%d\n", *k); 
    return 0; 
} 

出力:3

関連する問題