草庐IT

Unsigned

全部标签

c++ - 在哪里画 size_t 和 unsigned int 之间的界限?

这个问题在这里已经有了答案:unsignedintvs.size_t(8个回答)关闭8年前。我目前正在将我多年来一直在开发的代码库中的unsignedint的某些用途转换为size_t。我了解两者之间的区别,例如unsignedint可能是32位,而指针和size_t可能是64位。我的问题更多是关于我应该在哪里使用其中一个以及人们使用哪种约定在两者之间进行选择。很明显,内存分配应该使用size_t而不是unsignedint作为参数,或者容器类应该使用size_t作为大小和STL中的索引。这些是阅读size_t与unsignedint的好处时引用的常见案例。然而,在进行代码库转换时,我

c++ - 在哪里画 size_t 和 unsigned int 之间的界限?

这个问题在这里已经有了答案:unsignedintvs.size_t(8个回答)关闭8年前。我目前正在将我多年来一直在开发的代码库中的unsignedint的某些用途转换为size_t。我了解两者之间的区别,例如unsignedint可能是32位,而指针和size_t可能是64位。我的问题更多是关于我应该在哪里使用其中一个以及人们使用哪种约定在两者之间进行选择。很明显,内存分配应该使用size_t而不是unsignedint作为参数,或者容器类应该使用size_t作为大小和STL中的索引。这些是阅读size_t与unsignedint的好处时引用的常见案例。然而,在进行代码库转换时,我

c++ - 在 sqlite3 语句中绑定(bind) 'unsigned long' (uint64)? C++

我正在使用sqlite.org上提供的sqlite3库。.我有一些未签名的long想要存储在数据库中。我不想自己构建查询并将其留给某种注入(inject)(无论它是否是偶然的)。因此,我使用sqlite_bind_*功能来“清理”我的参数。问题是无符号长整数没有函数类型,只有整数。intsqlite3_bind_int(sqlite3_stmt*,int,int);intsqlite3_bind_int64(sqlite3_stmt*,int,sqlite3_int64);如果我无法以无符号方式存储它们,我肯定会有数字溢出。我需要自己管理吗?(即从数据库中选择后转换为无符号类型或在插入

c++ - 在 sqlite3 语句中绑定(bind) 'unsigned long' (uint64)? C++

我正在使用sqlite.org上提供的sqlite3库。.我有一些未签名的long想要存储在数据库中。我不想自己构建查询并将其留给某种注入(inject)(无论它是否是偶然的)。因此,我使用sqlite_bind_*功能来“清理”我的参数。问题是无符号长整数没有函数类型,只有整数。intsqlite3_bind_int(sqlite3_stmt*,int,int);intsqlite3_bind_int64(sqlite3_stmt*,int,sqlite3_int64);如果我无法以无符号方式存储它们,我肯定会有数字溢出。我需要自己管理吗?(即从数据库中选择后转换为无符号类型或在插入

c++ - 如何使用 c++ 将字符串散列为 int?

我必须编写自己的哈希函数。如果我只想制作一个简单的哈希函数,将字符串中的每个字母映射到一个数值(即a=1,b=2,c=3,...),有没有办法可以在一个字符串,而不必先将其转换为c字符串来查看每个单独的字符?有没有更有效的哈希字符串方法? 最佳答案 根据个人经验,我知道这很有效并且产生了良好的分布。(抄袭自http://www.cse.yorku.ca/~oz/hash.html):djb2这个算法(k=33)是danbernstein多年前在comp.lang.c中首次报道的。该算法的另一个版本(现在被bernstein青睐)使用

c++ - 如何使用 c++ 将字符串散列为 int?

我必须编写自己的哈希函数。如果我只想制作一个简单的哈希函数,将字符串中的每个字母映射到一个数值(即a=1,b=2,c=3,...),有没有办法可以在一个字符串,而不必先将其转换为c字符串来查看每个单独的字符?有没有更有效的哈希字符串方法? 最佳答案 根据个人经验,我知道这很有效并且产生了良好的分布。(抄袭自http://www.cse.yorku.ca/~oz/hash.html):djb2这个算法(k=33)是danbernstein多年前在comp.lang.c中首次报道的。该算法的另一个版本(现在被bernstein青睐)使用

c++ - 当我混合有符号和无符号类型时会发生什么?

我正在学习C++语言,我对类型转换有些疑问,你能解释一下在这样的表达式中会发生什么吗:unsignedintu=10;inta=-42;std::cout在这里我知道,如果我在有两个数学运算符时应用规则,结果将是52。但是我想知道当编译器将a转换为无符号值时会创建一个无符号类型的临时值时会发生什么,之​​后会发生什么?现在的表达式应该是10-4294967254。 最佳答案 简单来说,如果你混合相同等级的类型(按int、longint、longlongint的顺序),无符号类型“获胜”,并且在该无符号类型中执行计算。结果是相同的无符

c++ - 当我混合有符号和无符号类型时会发生什么?

我正在学习C++语言,我对类型转换有些疑问,你能解释一下在这样的表达式中会发生什么吗:unsignedintu=10;inta=-42;std::cout在这里我知道,如果我在有两个数学运算符时应用规则,结果将是52。但是我想知道当编译器将a转换为无符号值时会创建一个无符号类型的临时值时会发生什么,之​​后会发生什么?现在的表达式应该是10-4294967254。 最佳答案 简单来说,如果你混合相同等级的类型(按int、longint、longlongint的顺序),无符号类型“获胜”,并且在该无符号类型中执行计算。结果是相同的无符

c++ - 为什么 std::bitset 建议的可用位比 sizeof 所说的更多?

我正在处理C++中的一些简单的位操作问题,并在尝试可视化我的步骤时遇到了这个问题。我了解分配给不同原始类型的位数可能因系统而异。对于我的机器,sizeof(int)输出4,所以我的值有4个char位。我现在也知道一个字节的定义通常是8位,但不一定是这样。当我输出CHAR_BIT时,我得到8。因此,我希望我的int值总共有32位。然后我可以继续将我的int的二进制值打印到屏幕上:intmax=~0;//Allmybitsareturnedonnowstd::cout(max)如果我愿意,我可以增加bitset大小:intmax=~0;std::cout(max)为什么会有这么多?我本来希

c++ - 为什么 std::bitset 建议的可用位比 sizeof 所说的更多?

我正在处理C++中的一些简单的位操作问题,并在尝试可视化我的步骤时遇到了这个问题。我了解分配给不同原始类型的位数可能因系统而异。对于我的机器,sizeof(int)输出4,所以我的值有4个char位。我现在也知道一个字节的定义通常是8位,但不一定是这样。当我输出CHAR_BIT时,我得到8。因此,我希望我的int值总共有32位。然后我可以继续将我的int的二进制值打印到屏幕上:intmax=~0;//Allmybitsareturnedonnowstd::cout(max)如果我愿意,我可以增加bitset大小:intmax=~0;std::cout(max)为什么会有这么多?我本来希