2013-03-04 47 views
6

Vì vậy, dựa trên số question I asked earlier, tôi đã tải xuống và thiết lập tăng. Tôi có mã này:C++ Tăng Dung lượng Lưu trữ Lớn

#include <stdlib.h> 
#include <boost\multiprecision\gmp.hpp> 
using namespace std; 
using namespace boost::multiprecision; 

void main() { 
    mpz_int N(567014094304930933548155069494723691156768423655208899778686163624192868328194365094673392756508907687565332345345678900976543567890976543565789054335678097654680986564323567890876532456890775646780976543556789054367890765435689876545898876587907876535976565578907654538790878656543687656543467898786565457897675645657689756456578656456768654657898865567689656890795587907654678798765787897865654657897654678965465786867278762795432151914451557727529104757415030674806148138138281214236089749601911974949125689884222023119844272122501649909415937); 

} 

Nhưng khi tôi biên dịch nó nói

IntelliSense: integer constant is too large 

Nếu mpz_int không phải là những gì tôi phải để sử dụng, sau đó những gì tôi nên sử dụng cho ints lớn từ tăng?

+1

Với gmpxx, bạn chỉ có thể viết '567014094304930933548155069494723691156768423655208899778686163624192868328194365094673392756508907687565332345345678900976543567890976543565789054335678097654680986564323567890876532456890775646780976543556789054367890765435689876545898876587907876535976565578907654538790878656543687656543467898786565457897675645657689756456578656456768654657898865567689656890795587907654678798765787897865654657897654678965465786867278762795432151914451557727529104757415030674806148138138281214236089749601911974949125689884222023119844272122501649909415937_mpz' –

Trả lời

2

Bạn đang cố gắng xây dựng từ một số nguyên nghĩa đen: đó là chính xác điều đó, một chữ của kiểu "int" và chỉ có khả năng giữ "int" giá trị kích thước. Bạn có thể:

1) Đặt hằng số nguyên lớn vào dấu ngoặc kép để giá trị được tạo từ một chuỗi hoặc 2) Chỉ với cpp_int, hãy sử dụng hỗ trợ theo nghĩa đen do người dùng xác định để xây dựng từ chữ chính xác mở rộng , xem http://www.boost.org/doc/libs/1_55_0/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html Lưu ý rằng điều này đòi hỏi một trình biên dịch C++ 11 - VC++ mà bạn đang sử dụng chưa có các tính năng ngôn ngữ cần thiết để hỗ trợ việc này. Lưu ý rằng đây là khởi tạo constexpr đúng, không phải cấu trúc ẩn-từ-chuỗi-tại-thời gian chạy mà gmpxx sử dụng (nhất thiết phải cấp phát bộ nhớ đó là bắt buộc).

Các vấn đề liên quan