• 締切済み

c++でunsigned long long intを用いるには

OS(ディストリビューション)はubuntuです。 この質問の目標は表題のように 「c++でunsigned long long intを使えるようにすること」 です。なお、マシンは32bitなので64bitよりは遅くなります。 http://www.wdic.org/w/TECH/long%20long まずgccのバージョンは、gcc --versionによると、 gcc (GCC) 3.3.5 (Debian 1:3.3.5-8ubuntu2.1) でした。そこで、gccのバージョンを3.4.4以上に しようと考えました。 (↓の人は3.4.4でできているらしい。 http://qune.cside.com/archives/000959.html) そこで、 http://webos-goodies.jp/archives/50899271.html にそってgccをアップデートしようとしましたが、 /etc/portage/ というディレクトリはありませんでした。次に、 http://www.gentoo.org/doc/ja/gcc-upgrading.xml にそってgccをアップデートしようとしましたが、 emergeというコマンドは入っていませんでした。 さて、質問は以下の通りです。 1.「目標」を達成するのにこのルートはあっているのでしょうか? 2.あっているのなら、emergeのインストール法を教えてください。 3.あっていないなら、どのようにしたら「目標」を達成できるでしょうか?

noname#108554
noname#108554

みんなの回答

  • mkt23456
  • ベストアンサー率33% (21/63)
回答No.1

もうプログラミングが相当長いことやっていないので分かる所だけ。 ​> http://webos-goodies.jp/archives/50899271.html​ > にそってgccをアップデートしようとしましたが、 > /etc/portage/ > というディレクトリはありませんでした。次に、 ​> http://www.gentoo.org/doc/ja/gcc-upgrading.xml​ > にそってgccをアップデートしようとしましたが、 > emergeというコマンドは入っていませんでした。 ここら辺はGentoo Linuxの話だと思います。 Ubuntu のパッケージ検索をしてみると、 http://packages.ubuntu.com/ja/gcc-4.1 こんなのが出てきます。

noname#108554
質問者

お礼

ありがとうございます。 >ここら辺はGentoo Linuxの話だと思います。 ubuntuの話ではなかったんですね。 了解いたしました。 >Ubuntu のパッケージ検索をしてみると、 ​>http://packages.ubuntu.com/ja/gcc-4.1​ >こんなのが出てきます。 lsb_release -aでubuntuのバージョンを調べると、 Release: 5.04 Codename: hoary となって、HPに挙げられているバージョン(karmicなど)よりも ずっと古いのですがインストールして大丈夫なのでしょうか? ちなみに、gcc-3などでも検索してみましたが、 一番古いものでもdapper用gccでした。

noname#108554
質問者

補足

この質問とは関係のないところで解決してしまいました。 せっかくご回答いただいたのに申し訳ありません。

関連するQ&A

  • C90とC99の計算結果の違い?

    C言語の質問です。 gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu12) 以下のプログラムをgccでコンパイル・実行すると(1)に入り,"a"が出力されます。unsigned intの計算なのでラップアラウンドが生じtest=4294716272となるのは私の期待どおりです。 ただ、gcc -std=c99でコンパイル・実行すると(2)に入り,"b"が出力されました。c99でコンパイル・実行すると計算結果がなぜ異なっているのかが分かりません。 long test = 0; unsigned int x = 184; unsigned int y = 251208; test = (x-y); if(test == 4294716272){ printf("a");// (1) }else if(test == -251024){ printf("b"); // (2) }

  • unsigned int型について

    C言語初心者です。 unsigned int型に関する質問です。 --------------------------------- #include <stdio.h> int main(void) { unsigned int in1 = 10; unsigned int in2 = -10; unsigned char ch1 = 10; unsigned char ch2 = -10; printf("in1 = %d\n", i); printf("in2 = %d\n", i); printf("ch1 = %d\n", ch1); printf("ch2 = %d\n", ch2); return 0; } --------------------------------- 上記のプログラムを作成して実行すると、結果は以下の通りです。 [実行結果] in1 = 10; in2 = -10; ch1 = 10; ch2 = 246; 変数in2の値を表示した結果に関してですが、 unsigned int型にも関わらず負の値「-10」が表示されるのは 何故でしょうか?

  • int→unsigned int キャスト

    int test01; unsigned test02; の場合、test02にtest01の値を代入したい場合どうすればよいでしょうか? 型は変更できません。 キャストして代入しても大丈夫でしょうか?

  • Xglのコンパイル

    GentooにXglを導入するべく奮闘しているのですがつまづいています。 最初は http://gentoo-wiki.com/HOWTO_XGL の記事の通り進めようと思っていたのですがportageツリーにxglのパッケージが現在無いようで、 $ sudo emerge -va xgl が出来ません。 仕方ないので http://www.freedesktop.org/wiki/Software/Xgl に従ってソースからのコンパイルに挑んだのですが、autogen.shを実行した際に error: /tmp/Mesa/src/mesa/shader/slang/library/slang_version_syn.h not found configure: error: Failed to link Mesa source tree. Please specify a proper path to Mesa sources, or disable GLX. と表示され Mesaとどうやらバージョンがあってないみたいです。 しかしcvsのブランチxgl-0-0-1に対応するMesaのバージョンがどこにも書かれておらずどうすればよいか途方に暮れています。 どなたかアドバイスをお願いします。

  • intとlongは同じ?

    #include <stdio.h> #include <limits.h> int main() { printf("%d\n%d", INT_MAX, LONG_MAX); return 0; } 出力 214783647 214783647 Win7 64bit (VC++2010) CentOS 32bit (gcc) どちらの環境でも同じ出力結果となりました。 intとlongなぜ同じになってしまったのでしょうか。

  • Long Int と Int の使い分けは

     今晩は、Cの初心者です、宜しくお願いします。  データーの型で、IntとLong Intがあっていどちらも4Bytesで扱えるデーターの範囲も同じなのですが、 Long Intはどのようなときに使うのでしょうか。

  • unsigned int型と int型の型変換の上位性

    if(-10<1u)の条件判定はunsigned型で評価され偽となります。 int型 unsigned int型とも32ビットで考えたとき、 1u = 0x00000001 -10 = 0xfffffff6で10進法では4294967286になります。 条件判定をunsigned型で考えれば確かに-10<1uは偽になり int型で考えれば-10<1uは真になります。 「通常の算術変換」によれば、「一方のオペランドがunsigned int型をもつ時、他のオペランドをunsigned int型に型変換するとあります。」 よって、if(-10<1u)の条件判定はunsigned型で評価され偽となりますが、 「一方のオペランドがint型をもつ時、他のオペランドをint型に型変換する。」では何故いけないのでしょうか? 宜しく願います。

  • 取ってこれないメモリのはずのmallocの動作

    こんにちは.mallocの動作,及びコンパイルの仕様について質問です. 以下のような.cのプログラムを書いてgccでコンパイルして実行してみました. #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char **argv) { int size = 0; int *tmp = NULL; while(1){ printf("Size %d\n", size++); tmp = (int *)malloc(size * 1024 * 1024); usleep(10000); free(tmp); } } このプログラムだと,heapから取ってこれないぐらい大きいメモリだとなんか起きるのかな?どれぐらいまで取ってこれるのかな?という興味でやってみたのですが, 1)32bit, 64bit ubuntu のgcc (バージョンは覚えてないですけど一番updateされてると思います)では永遠に回り続け, 2)Mac のgccだとSize=2048以降,つまり2GB以降で a.out(1145,0x7fff73a1b310) malloc: ***mach_vm_map(size=18446744071562067968) failed (error code=3) *** error: can't allocate region というエラーをはきます.(プログラムは回り続けます) a. この違いはgccの違いからくるという理解でよろしいですか?Macでの2GBというのもコンパイル側の制約なのでしょうか? b. ubuntuでは実際何が起こってるのでしょう?1000GBとか絶対取れないですけど回ってますし. c. ubuntuで実際に何が起こってるかを確認する方法はありますか.アセンブラとか吐かせるのでしょうか? お時間のあるときに回答してもらえたらと思います.

  • 変数の型でlong longとunsigned long longと言うのは何ですか?

    教えていただきたいのですが、変数の型にlong longやunsigned long long なるものがあると聞いたのですが、どのようなものでしょうか? また、どのように宣言するのでしょうか?通常のlongなどと同じ要領で宣言し てやれば良いのでしょうか? もし、この型がある場合に、制約はあるのでしょうか?Unixでしか使えないとか の制約等ありましたらぜひ教えてください。 お願いいたします。

  • Linuxをアップデートしたい。

    Linuxをアップデートしたい。 ■状態 元々postgresqlを入れてDBサーバとして利用していたが、もう使わないのでと譲り受けました。 postgresqlが動く最低限のものしか入っていません。 本体のみ、モニタなし。 同じlan上のwin-xpから使用する事が前提。 同じlan上のwin-xpはインターネット接続可。 sshによるcui的な接続で作業している。 xwindowはssh接続では見ることはできないが、起動している。 yumは動く状態にありません。 ■バージョン # cat /proc/version Linux version 2.6.18-128.1.16.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Tue Jun 30 06:10:28 EDT 2009 ■目標 yum(自体)のインストール。 RealVNCからの遠隔xwindow操作 ■その他 再セットアップした方が早いのは分かっていますが、それは選択肢にありません。 Linuxの初心者です。 まず、yumを動くようにしたいのですが、何から手を付ければ良いでしょうか? centosの修復インストールのような事をして、全体を直したいですが、この状態からそれは可能でしょうか?