• ベストアンサー

long型に値を代入したい。

long型に値を入れる時は、 long id = 100L; とすると思うのですが、例えば int old_id = 100; long new_id = old_id*100; というように、あらかじめint型に入っている値に計算結果を入れて、long型の変数に値を入れたいのですが、このとき「L」はどのようにつければいいのでしょうか? long new_id = old_id*100+L; かなと思い、やってみたのですが、エラーが出てしまいます。

  • Java
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • hal_n
  • ベストアンサー率43% (7/16)
回答No.2

以下のコードで、やりたい事が実現できるかと思います。 int i = 100000000; long l = i * 100L; なお、似ているようですが、以下のコードでは結果が違ってきます。 int i = 100000000; long l = i * 100; //100L ではなく 100 理由を考えてみると面白いですよ。 int と long では、分かりにくいですが、int と double だと理解しやすいかもしれません。 int i = 10; double d = i / 3; がんばってください。

その他の回答 (3)

  • BleuLune
  • ベストアンサー率57% (15/26)
回答No.4

javaのバージョンによりますが、 1.5以降ならAutoBoxingがあるので特に処理を書くことはないです。 1.4以前ならIntegerクラスでラップしてからInteger.longValue()を使用すればいいかと思います。 このあたりは、javadocを読めば自分がやりたい処理に必要なメソッド、コンストラクタは書いてますよ。 googleで「java int ラッパークラス」で検索すれば、たくさん情報が集まるかと。。。

nabewari
質問者

お礼

皆さん、回答ありがとうございます。 解決しました。

noname#78739
noname#78739
回答No.3

long id = 100L; 右辺を100と書いた場合、整数値のデータ型は自動的にint型になります。 左辺に代入の際、long型に暗黙の型変換がされます。 右辺の計算結果で、型の範囲を超えるといった場合、Lをつけるなどして、型の範囲に収めるようにキャストする感じ。かな。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>あらかじめint型に入っている値に計算結果を入れて、long型の変数に値を入れたい 勝手にキャストされるので、そのまま代入して下さい。

関連するQ&A

  • 値が代入されてない時

    あるint型の変数iがあったとします。 このときiに値が代入されてない(初期化されていない)ときのみにある動作をさせたいのですが、うまくやる方法がわかりません。 どなたか、アドバイスお願いします。

  • long型の定数の末尾にLを付ける意味

    long型の変数に値を代入する時に、値の末尾に"l"または"L"を付けることが推奨されていますが、なぜLを付けるのでしょうか?Lを付けることによって何かが変わるのでしょうか?回答よろしくお願いします。

  • C言語signed long long型の演算

    C言語で以下の演算を行った場合、変数bに格納される値が-1(0xFFFFFFFFFFFFFFFF)になることを期待しておりましたが、参照すると4294967295(0x00000000FFFFFFFF)となってしまいます。 unsigned int a = 1; signed long long b; b = a * (-1); 32bit、64bitのUNIX(Solaris)マシンでそれぞれ確認しましたが、どちらも同じ結果となりました。 変数aの型宣言をsigned intにすると変数bが-1(0xFFFFFFFFFFFFFFFF)になることは確認したのですが、unsigned intだとなぜこのような演算結果となるのかが分かりません。 ※8バイト整数に格納する際に先頭4バイトがなぜ0xFFFFFFFFで補完されないのか? ちなみに変数bの型宣言をsigned long intにすると32bitマシンでは-1となりましたが、64bitマシンでは4294967295となってしまいます。 これは32bitUNIXマシンではsigned long intは4バイト領域であるため-1(0xFFFFFFFF)となり、64bitUNIXマシンでは8バイト領域のため前述と同じ結果になるのだと考えますが、なぜ8バイト整数を使用するとこのような演算が行われるのかが分からないので、演算順序や型変換の優先順位がどのように行われいるのか説明できる方教えてください。

  • longについて

    javaだとlongって64bit型整数型だと思うのですが long L = 0xffffffff; とするとprintlnでは-1がはいっています。 long L = 0xfffffffff; としようとすると 整数 fffffffff が大き過ぎますとエラーがでます。 直接 Date D = new Date(L); でDateにいれるのは無理でしょうか?

    • ベストアンサー
    • Java
  • 複素変数に値が正しく代入されない

    複素変数を使ったプログラムを作るために、 まず複素変数を作成して値を表示するだけのプログラムを作ったのですが、 虚数部分に代入されるはずの値が実数部分に表示され、 虚数部分には0が表示されてしまいます。 書いたプログラムは #include<stdio.h> #include<complex.h> int main(void){ complex<double> a=(1.2,2.3); printf("%g %gi\n",real(a),imag(a)); } 結果は 2.3 0i でした。 どこで書き方を間違えているのでしょうか。 cファイルだとcomplex.hをインクルードしようとすると stdcomp.hでエラーが出るのでcppファイルにしています。 コンパイラはBorland C++ Compiler 5.5を使っています。

  • C言語のfloat型変数の値代入と表示について

    float型変数の値代入と表示について質問があります。 #include <stdio.h> int main(void) {  float flVal = 50.456;  printf("float型変数:%f", flVal);  return 0; } 上記を実行すると、「float型変数:50.456001」と表示されました。 また、float flVal = 50.1; と変えて実行すると、「float型変数:50.099998」と表示されました。 それぞれ期待していた結果は、 「float型変数:50.456000」、「float型変数:50.100000」だったのですが 代入した値と結果が微妙に異なる理由は何でしょうか。よろしくお願いします。

  • 代入したのに値が更新されないんです・・・

    WindowsXP VC.netでプログラミングしているのですが、 PostMessageでコールされる関数のWPARAMを publicで宣言した変数に代入しても、 値が更新されないんです。。。 public: WPARAM m_wWP; とヘッダで定義して、 WPARAMの値が10であった時、 long testclass::PostCallFunc( WPARAM wparam, LPARAM lparam) { m_wWP = wparam; } とやってもm_wWPが10にならないんです。。。 とっても困っています。 ご存知の方がいらっしゃいましたらご教授ください。 よろしくお願いします。

  • long型のランダムな値を返す方法

    C言語について質問させて頂きます。 私は今、0以上50万以下(上限は50万以上ならどんな値でもかまいません)の範囲でランダムに整数を得たいと考えております。 #include <stdlib.h>のint rand(void)は0以上の乱数を返してくれますが、返す値はintの範囲内(?)なので、要望に合っておりません。 そこで、long型のランダムな値を得たいと思っております。 一体、どのような関数またはアルゴリズムを使えば、望むように出来るのでしょうか? 是非、お教えください。

  • ある変数の内容を編集して他の変数に代入する方法

    Perl で、例えば $old に "123ABCDE456" という値が入っているとします。 これを、"ABCDE" を削除して $new に入れたいのですが、私はいつも   $new = $old;   $new =~ s/ABCDE//; のようにやっています。これで、確かに目的の結果にはなるのですが… こういう操作を、1行の文で書ける方法はないでしょうか? よろしくお願いします。 (但し、$new = $old, $new =~ s/ABCDE//; で1行だよ、というのは当然除きます^^)

    • ベストアンサー
    • Perl
  • クラスのフィールドの値を配列に代入する方法

    フィールドの値を代入したいのですが、 java.lang.ArrayIndexOutOfBoundsException というエラーが出てしまい、どうすればいいのかわかりません。 どのように対処すればいいのでしょうか? class Car { String carname; int height; int width; int length; } class public static void main(String[] args) throw IOException { Car car[]; car = new Car[5]; System.out.println("車の情報を入力してください。"); BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in); for(int i=0; i<5; i++){ car[i] = new Car(); System.out.println(i+1 + "台目の車の名前を入力してください。"); String str1 = br1.readLine(); System.out.println("車の高さを入力してください。"); String str2 = br1.readLine(); System.out.println("車の幅を入力してください。"); String str3 = br1.readLine(); System.out.println("車の長さを入力してください。"); String str4 = br1.readLine(); int h1 = Integer.parseInt(str2); int w1 = Integer.parseInt(str3); int l1 = Integer.parseInt(str4); car[i].carname = str1; car[i].height = h1; car[i].weith =w1; car[i].length =l1; } for(int i=0; i<5; i++){ int c_h[] = new int[5]; c_h[i] = car[i].height; } } よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう