• ベストアンサー

scanfのことで質問なんですが…

unsigned long long int n; printf("Please input value : \n"); scanf("%llu", &n); printf("n = %llu\n", n); という感じで入力した数字をそのまま出力するプログラムを組んだのですが、そのまま表示されません。どうしてなんでしょうか??? コンパイルは通るのですが…。 また、解決方法はどんなものがあるのでしょうか??? 教えていただければ助かります。 お願いします。

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

  • ベストアンサー
  • kei1
  • ベストアンサー率75% (3/4)
回答No.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

ichiro29
質問者

お礼

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

その他の回答 (2)

回答No.2

表示されないと言うのはどういうことですか? どんな感じになるのでしょうか。

ichiro29
質問者

お礼

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

ichiro29
質問者

補足

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

  • Ryo_Hyuga
  • ベストアンサー率38% (61/158)
回答No.1

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

ichiro29
質問者

お礼

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

ichiro29
質問者

補足

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

関連するQ&A