• ベストアンサー

アドレス型へのキャストはなぜ

アドレスのキャストはなぜ (int &)&a; ではなく &(int &)a; としなくてはいけないんでしょうか? 色々と調べてみてもわからず・・・。回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

用途によって使い分けます。 > (int &)&a; としなければ目的を満たせない場合もあるし、 > &(int &)a; としなければ目的を満たせない場合もあります。 ですから、 > アドレスのキャストはなぜ > としなくてはいけないんでしょうか? と言う質問は、何か勘違いしているかと思います。 調べるなら、 > (int &)&a; と > &(int &)a; が、 それぞれ、どのような意味を持つのかを調べると良いのでは、ないでしょうか。

noname#113783
質問者

お礼

勘違いしていました。 考えてみたところ、キャスト演算子が単項演算子だと言うことで納得がいきました。 回答ありがとうございました!

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

元のaの型は何で、結果として何が得られることを想定していますか? *(int *)aのような書き方なら珍しくはないんですが。

noname#113783
質問者

お礼

(int &)(&a); としたらエラーが出ていたので、この書き方はいけないものかと勘違いしていました。 キャスト演算子をしっかり理解していなかったのが原因で勘違いしていたようですが、しっかり考えたら解決できました。 回答ありがとうございました!

関連するQ&A