草庐IT

T_Unsigned

全部标签

c++ - unsigned char 在函数调用中自动提升为int,为什么?

为什么在调用函数时unsignedchar会自动提升为int?在下面的示例中,有一个f(int)和一个f(char)函数。编译器将unsignedchar参数强制为char并调用f(char)似乎更合乎逻辑,因为它们具有相同数量的位。它改为调用f(int),即使这意味着将参数提升为具有更多位的类型。任何指向规则定义位置的指针?标准还是编译器/平台特定?#includevoidf(intkey){std::cout产生这个输出:voidf(int)voidf(char)voidf(int) 最佳答案 因为unsignedchar不能用

c++ - 将 (void*) 转换为 std::vector<unsigned char>

我有一个(void*)我需要转换为std::vector的缓冲区在我可以传递它之前。不幸的是,我的C++类型转换技能有点弱。有什么建议吗? 最佳答案 您将需要缓冲区的长度。一旦你这样做了,我们就可以这样做:unsignedchar*charBuf=(unsignedchar*)voidBuf;/*createavectorbycopyingoutthecontentsofcharBuf*/std::vectorv(charBuf,charBuf+len);好的,评论让我开始了解我为什么不使用reinterpret_cast:InC+

c++ - 将 (void*) 转换为 std::vector<unsigned char>

我有一个(void*)我需要转换为std::vector的缓冲区在我可以传递它之前。不幸的是,我的C++类型转换技能有点弱。有什么建议吗? 最佳答案 您将需要缓冲区的长度。一旦你这样做了,我们就可以这样做:unsignedchar*charBuf=(unsignedchar*)voidBuf;/*createavectorbycopyingoutthecontentsofcharBuf*/std::vectorv(charBuf,charBuf+len);好的,评论让我开始了解我为什么不使用reinterpret_cast:InC+

c++ - C/C++ 中整数类型别名的标准保证?例如。 : Is "unsigned" always equal to "unsigned int"?

第一个问题:“无符号”总是与“无符号整数”相同吗?“signed”总是与“int”相同吗?“short”总是与“signedshort”相同吗?是……第二个问题:如果C/C++标准规定了上述问题的答案,哪些段落与这些问题相关? 最佳答案 是的,这些都是有保证的。在C++11中,请参阅§7.1.6.2[dcl.type.simple]/table10,其中列出了所有简单类型说明符(及其组合)及其含义。例如,该表包括以下内容:unsigned=>unsignedintunsignedint=>unsignedintsigned=>int

c++ - C/C++ 中整数类型别名的标准保证?例如。 : Is "unsigned" always equal to "unsigned int"?

第一个问题:“无符号”总是与“无符号整数”相同吗?“signed”总是与“int”相同吗?“short”总是与“signedshort”相同吗?是……第二个问题:如果C/C++标准规定了上述问题的答案,哪些段落与这些问题相关? 最佳答案 是的,这些都是有保证的。在C++11中,请参阅§7.1.6.2[dcl.type.simple]/table10,其中列出了所有简单类型说明符(及其组合)及其含义。例如,该表包括以下内容:unsigned=>unsignedintunsignedint=>unsignedintsigned=>int

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++ - 内存: "signed char *" vs "unsigned char *"的字节读取

人们经常需要一次从内存中读取一个字节,就像在这个幼稚的memcpy()中一样实现:void*memcpy(void*dest,constvoid*src,size_tn){char*from=(char*)src;char*to=(char*)dest;while(n--)*to++=*from++;returndest;}但是,我有时会看到人们明确使用unsignedchar*而不仅仅是char*.当然,char和unsignedchar可能不相等。但是我是否使用char*有区别吗?,signedchar*,或unsignedchar*什么时候按字节读/写内存?更新:实际上,我完全知