• 締切済み

64bit → 32bit型へのキャスト

long 64data = 1; int 32data = (int)64data; 64bitの変数で上位32bitは使わない場合、int型の変数にキャストして代入することは可能ですか?

みんなの回答

回答No.6

直接の回答ではありません。 「実験してみる」というのは、時にあまり良くない方法でもあります。 実験してうまくいかなければ良いのですが、うまくいったときに、 ・うまくいったと勘違いした。 ・そのケース(データ、処理系)だと、たまたまうまくいった。 というケースに遭遇し、あとあと不幸な経験をすることもままありますから。

回答No.5

先頭が数字で始まる変数名を付けるなど言語道断

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

そもそも「long は 64ビット」とか「int は 32ビット」とかいうことは (規格では) 決まっていないんだけど,それは大丈夫なの? でそれが大丈夫という前提だけど, もともと int で表現できる値なら問題ありません. 逆に「もともとが int では表せない」ときには, その結果は処理系依存です.

  • kngj1740
  • ベストアンサー率18% (197/1052)
回答No.3

代入ではキャストしなくとも、警告は出るかも知れないがエラーにはならないと思いましたが。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.2

簡単だから実際にやってみればいい でないと理解出来ないでしょ その変数名ではコンパイル通らないけどね・・・

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

私だったら、実験するコードを書いて試してみます。 うまくいけばそれでよいし、ダメだったらどうすればいいかを考えます。

関連するQ&A