草庐IT

Long-Horizon

全部标签

c++ - 从 unsigned long long 转换为 float with round 到最接近的偶数

我需要编写一个函数,将unsignedlonglong舍入为float,并且舍入应朝向最近的偶数。我不能只进行C++类型转换,因为AFAIK标准没有指定舍入。我正在考虑使用boost::numeric,但在阅读文档后我找不到任何有用的线索。这可以使用那个库来完成吗?当然,如果有替代方案,我会很乐意使用它。如有任何帮助,我们将不胜感激。编辑:添加示例以使事情更清楚一些。假设我想将0xffffff7fffffffff转换为其浮点表示形式。C++标准允许以下任一项:0x5f7fffff~1.9999999*2^630x5f800000=2^64现在,如果你加上最接近偶数的舍入限制,只有第一个

1071 - Specified key was too long; max key length is 3072 bytes Mysql报错解决方法

错误信息“Specifiedkeywastoolong;maxkeylengthis3072bytes”是在MySQL数据库中创建索引时可能出现的问题,通常出现在尝试创建一个过长的唯一键(UNIQUEKEY)或主键(PRIMARYKEY)时。MySQL对于InnoDB存储引擎有一个索引键长度的限制,这个限制基于字符集的不同而不同。例如,在使用utf8字符集时,每个字符可能占用3个字节,那么对于innodb表,索引键的最大长度大约为1000个字符左右(因为3072/3≈1024)。若字符集是utf8mb4,每个字符可能占用4个字节,所以最大长度会进一步减少到768个字符左右(3072/4=768

c++ - 将 unsigned long long 与 signed long long 结果相减?

假设我有这两种类型:typedefunsignedlonglonguint64;typedefsignedlonglongsint64;我有这些变量:uint64a=...;uint64b=...;sint64c;我想从a中减去b并将结果赋给c,很明显,如果差值的绝对值大于2^63,那么它将换行(或未定义),这是可以的。但是对于绝对差小于2^63的情况,我希望结果是正确的。以下三种方式:c=a-b;//signconversionwarningignoredc=sint64(a-b);c=sint64(a)-sint64(b);其中哪些可以保证按标准工作?(以及为什么/如何?)

c++ - 添加 long 值显示不同的 o/p

我在添加长值时遇到问题例子typedefunsignedshortUINT16;UINT16*flash_dest_ptr;//thisisequaltoinhexa0XFF910000UINT16data_length;//hex=0x000002AA&dec=682//nowwhenIaddUINT16*memory_loc_ver=flash_dest_ptr+data_length;dbug_printf(DBUG_ERROR|DBUG_NAVD,"ADDhex=0x%08X\n\r",memory_loc_ver);实际O/p=0xFF910554//shouldn'to/p

c++ - 在计算过程中将 int 类型转换为 long long 有什么好处?

我通过以下函数得到了错误的答案。vectorrepeatedNumber(constvector&A){intn=A.size();longlonglinear_sum=0,square_sum=0;inti=0;for(;ians;ans.push_back((linear_sum+square_sum)/2);ans.push_back((-linear_sum+square_sum)/2);returnans;}但是当我将LINE1和LINE2替换为:linear_sum+=(longlong)A[i];square_sum+=(longlong)A[i]*(longlong)A

c++ long double 精确打印所有数字

关于我的问题,我在这里看到了一篇帖子,但不明白,因为我是C++的新手。我写了一个小脚本,它从用户那里获取一个数字,脚本打印出输入数字的阶乘。一旦我输入更大的数字,如30,脚本不会打印出所有数字。输出就像2.652528598E+32但是我想要的是确切的数字265252859812191058636308480000000。有人可以解释如何以长double获取所有数字。提前致谢 最佳答案 您可以将输出流的精度设置为任何您想要的精度,以获得您想要的结果。http://www.cplusplus.com/reference/ios/ios

C++ 将 long、short 和所有 int 转换为 uint32_t、int32_t 等等有帮助吗?

我运行着一个使用C++编码的游戏服务器,其中还有一些ASM和C。我看到有人更新了我运行的同一台服务器,在所有更新中,所有int、unsigned、short和其他所有内容都已更改为int32_t、uint32_t、uint64_t和其他内容。全部改成上面说的有什么好处吗?假设我将所有int更改为int32_t,并将所有unsignedint更改为uint32_t,当然还有所有其他可能更改的内容。我试图阅读和理解是否有任何好处,但我根本没有理解它们的真正含义。所以,是的,问题是:按照我刚才所说的去做有什么好处吗?我使用的编译器是OrwellDev-C++ 最佳

c++ - 在 C++ 标准中哪里说 sizeof(wchar_t) <= sizeof(long) 和 sizeof(bool) <= sizeof(long)?

先生。Stroustrup在他的新书(TCPL第4版)第149页写下了以下内容1我在标准中找不到任何支持上面最后一个不等式的内容。我可以对sizeof(bool)说同样的话.编辑:在3.9.1p5你会发现:Typewchar_tshallhavethesamesize,signedness,andalignmentrequirements(3.11)asoneoftheotherintegraltypes,calleditsunderlyingtype.支持不平等sizeof(wchar_t)但不是sizeof(wchar_t)但是我找不到任何可以证实的东西sizeof(bool)

c++ - (long long)x 与 C++ 中的 (long long)floor(x) 相同吗?

假设我有一个double数据类型,名为“x”的变量。是否有必要将double转换为longlong数据类型与转换为longlongfloor(x)得到相同的结果。 最佳答案 不,这不一样。强制转换截断(向零舍入),floor函数向下舍入。演示:http://ideone.com/k8JuA9#include#includeintmain(){doublex=-1.4;std::cout 关于c++-(longlong)x与C++中的(longlong)floor(x)相同吗?,我们在St

c++ - 使用 Int 的初始化列表初始化 Long Double 的 vector

假设我有一个简单的类:classPvector{private:std::vectorpoint_list;public:Pvector(std::initializer_listcoords):point_list(coords){}Pvector(std::initializer_listcoords):point_list(coords){}};这将无法编译,因为longdouble模板化的std::vector无法从int类型模板化的初始化列表中初始化自身.然而,这很不方便,因为删除了第二个构造函数后,我无法在我的代码中执行以下操作:Pvectorpiece_movement(