unsigned long long int n;

printf("Please input value : \n");
scanf("%llu", &n);
printf("n = %llu\n", n);

という感じで入力した数字をそのまま出力するプログラムを組んだのですが、そのまま表示されません。どうしてなんでしょうか???
コンパイルは通るのですが…。
また、解決方法はどんなものがあるのでしょうか???
教えていただければ助かります。
お願いします。

A 回答 (3件)

FreeBSD の gcc-2.7.2.1 で実行しましたが、特に問題なく動作します。


もしかして、変数の最大値を超えて入力してはいませんか?
固定領域長の変数だと、どんなコンパイラでも上限は存在します。


bash-2.02# ./a.out
Please input value :
4294967295
n = 4294967295
bash-2.02# ./a.out
Please input value :
4294967296
n = 0


巨大な整数で計算したい場合は、多バイト長整数ライブラリを使用して下さい。
サンプルとして g++ の Integer.h を使用した例(適当すぎるけど^^;)を載せます。

bash-2.02# cat test2.cc
#include <std.h>
#include <g++/Integer.h>

int main( int ac, char *av[] )
{
Integer *val1 = new Integer(100);
Integer *val2 = new Integer(100);
*val1 = atoI("12345678901234567890");
*val2 = atoI("56789012345678901234");
cout
<< *val1
<< " + "
<< *val2
<< " = \n\t"
<< *val1 + *val2
<< "\n";
cout
<< *val1
<< " * "
<< *val2
<< " = \n\t"
<< *val1 * *val2
<< "\n";
return 0;
}
bash-2.02# ./a.out
12345678901234567890 + 56789012345678901234 =
69134691246913469124
12345678901234567890 * 56789012345678901234 =
701098911537997408286566514313977776260
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました。
おかげ様で無事解決することができました。

お礼日時:2001/04/27 12:56

表示されないと言うのはどういうことですか?


どんな感じになるのでしょうか。

この回答への補足

すいません。説明不足でした。
ubsign long long int型の変数に
4294967295以上の数を入力した場合に正しく出力されないのです。
それをするためにはどうすれば良いのでしょうか?

補足日時:2001/04/15 23:32
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事解決いたしました…。

お礼日時:2001/04/27 12:55

えっと...まず使っているソフトを教えてください。


Windowsアプリを作るソフト(VC++など)では、使えないこともあるので...
もう少し詳しい状況(どんなプログラムを作ろうとしたのかなど)を教えていただけるとありがたいです。

この回答への補足

今作成しているのは、大きい数の素因数分解を行うプログラムです。
使っているのはよく分かりません…。
でもLinuxを使っています。

補足日時:2001/04/14 19:07
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事解決いたしました…。

お礼日時:2001/04/27 12:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報