• ベストアンサー

キャスト演算子について

初心者の初歩的な質問ですが、変数の型を変換するキャスト演算子がありますが本を読んでいて思ったのですが変換した式の型はその後どうなるのでしょう? 例で(前略) ----------------------------   int A =0; /*A=0*/ double B =2; /*B=2.000000*/ A = (int)B; B = 3; ----------------------------- とするとA=2 となりますがこの時のBの型はどうなるのでしょう? キャストを使用すると最初に宣言したdoubleがintになってしまうのか?後で代入した3は最初に宣言したdouble型の「3.000000」?それとも変換したint型「3」? 多分最初のままのような気はしますが。よろしくお願いします。

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

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.1

キャストとは変数の中身の解釈方法をコンパイラに指示するものです。 変数の中身を変えるものではありません。 したがって Bは3.0(double)のままです。

poyo3
質問者

お礼

やはりそうでしたか。変数の型がそのつど変わると大変ですよね。 回答ありがとうございます。

その他の回答 (1)

  • S117
  • ベストアンサー率40% (18/45)
回答No.2

キャスト演算子は変数ではなく値に作用し、その値を目的の型に沿うよう変換します。 また副作用を起こしません。 つまり、予想の通り最初のままです。 以下解説です。 A = (int)B; ここは Bの値(double型の値2.0)を得る->double型の値2.0をint型へキャスト->int型の値2をAへ代入 と解釈します。 これはそれぞれ(値が期待される場所での左辺値)->(キャスト演算子)->(代入演算子)の作用です。 また、一般にCなどの静的な型付けをする言語では変数の型は不変です。

poyo3
質問者

お礼

一度宣言した型は変わらないわけですね。回答ありがとうございます。

関連するQ&A

専門家に質問してみよう