定义变量类型

时间:2017-07-16 16:48:20

标签: c++ integer max

ALL,

根据this,最大整数值是无符号长整数。

所以,如果我有一个更大的值,唯一的方法是使用double,对吗?还是有另一种选择?

这是我的代码:

unsigned long id;
retcode = SQLPrepare( stmt, qry, SQL_NTS );
retcode = SQLExecute( stmt );
retcode = SQLFetch( stmt );
retcode = SQLGetData( stmt, 1, SQL_C_ULONG, &id, 0, &cbName );

(省略错误处理)

在这里,我在最后一行执行时出现“超出范围”错误。我认为这是因为id太大而无法存储在unsigned long中。

知道如何解决这个问题吗?

P.S。:我想保存14757395258967641292,即使unsigned long long

也更大

3 个答案:

答案 0 :(得分:3)

有大量的整数库。有Boost.Multiprecision,你会对Integer Types感兴趣。 This Google搜索会显示各种类型。

答案 1 :(得分:0)

您不能使用double来存储整个值,您可以使用long。

答案 2 :(得分:0)

显然,DB中的值存储为有符号整数。所以改变了

retcode = SQLGetData( stmt, 1, SQL_C_ULONG, &id, 0, &cbName );

retcode = SQLGetData( stmt, 1, SQL_C_SLONG, &id, 0, &cbName );

解决了这个问题。

希望这会帮助别人。

对不起噪音,谢谢你的阅读。