草庐IT

Unsigned

全部标签

c++ - operator new(n) 与 new unsigned char[n] 用于放置 new

我正在分配内存,稍后将用于构造具有放置new的对象。我应该使用operatornew(n),还是应该使用newunsignedchar[n]?为什么? 最佳答案 因素:new[]必须与delete[]/new()与delete匹配他们交流不同的东西。operatornew(n)是出于未指定目的的内存请求,而newunsignedchar[n]松散地暗示有意将字符存储在那里。数组形式可能稍微性能/效率较差-具体细节取决于您的实现:5.3.4/12newT[5]resultsinacallofoperatornewwherexisano

c++ - MSVC++ : Strangeness with unsigned ints and overflow

我有以下代码:#includeusingnamespacestd;intmain(intargc,char*argv[]){stringa="a";for(unsignedinti=a.length()-1;i+1>=1;--i){if(i>=a.length()){cerr如果我在完全优化的MSVC中编译,我得到的输出是“-1?”。如果我在Debug模式下编译(没有优化),我不会得到任何输出(预期。)我认为标准保证无符号整数以可预测的方式溢出,因此当i=(unsignedint)(-1)、i+1=0时,循环条件i+1>=1失败。相反,测试以某种方式通过了。这是编译器错误,还是我在某处

c++ - 如果整数溢出, (unsigned int) * (int) 的结果是什么?无符号或整数?

如果整数溢出,(unsignedint)*(int)的结果是什么?unsigned还是int?数组索引运算符(operator[])为char*采用什么类型:int、unsignedint或还有别的吗?我正在审计下面的函数,突然出现了这个问题。该函数在第17行存在漏洞。//Createacharacterarrayandinitializeitwithinit[]//repeatedly.Thesizeofthischaracterarrayisspecifiedby//w*h.char*function4(unsignedintw,unsignedinth,char*init){ch

c++ - 声明一个 "unsigned T"

我想在模板中使用无符号T:templatevoidsigned2unsigned(constT*source,unsignedT*dest,size_tn){do{intmax_ts=*source;s+=min(*source);*dest=s;++dest;++source;--n;}while(n!=0);}这是行不通的,因为在考虑类型T之前,unsignedwithout被扩展为unsignedint。除了引入U并在文档中写明U必须是无符号T之外,是否有解决方法? 最佳答案 std::make_unsigned::type是

c++ - unsigned关键字会影响sizeof的结果吗?

C和C++是否保证类型的无符号等价物具有相同的大小?例子:size_tsize=sizeof(unsignedint);unsigned在这里完全没有实际意义吗? 最佳答案 两种语言都保证相应标准整数类型的有符号和无符号变体具有相同的大小。C++,委员会草案n3337,3.9.1/3:3Foreachofthestandardsignedintegertypes,thereexistsacorresponding(butdifferent)standardun-signedintegertype:“unsignedchar”,“un

c++ - 如何打印 std::atomic<unsigned int> 的值?

我正在使用std::atomic在我的程序中。如何使用printf打印它的值?如果我只使用%u是行不通的.我知道我可以使用std::cout,但我的程序中到处都是printf电话,我不想更换他们中的每一个。以前我用的是unsignedint而不是std::atomic,所以我只是使用%u在我的printf中的格式字符串中调用,因此打印工作正常。尝试打印std::atomic时遇到的错误现在代替常规unsignedint是:error:format‘%u’expectsargumentoftype‘unsignedint’,butargument2hastype‘std::atomic’

c++ - 如何从 unsigned long long 掩码中获取数字?

我想知道如何反转像this这样的东西.所以有一个mask其中automask=1ULL如何获得20从面具出来? 最佳答案 无循环很多年前,当我为国际象棋引擎编写按位算法时,我发现了一个快速实现,它对您的要求很有用,它是无循环的。此方法将返回第一个1位从右到左(最低有效位)的位置:inlineunsignedintlsb(unsignedlonglongvalue){if(!value)return-1;value&=-value;unsignedintlsb=(unsigned)value|(unsigned)(value>>32)

c++ - size_t 到 unsigned int(来自 API 函数)

我正在使用OracleAPI访问数据库,此API有一个函数readBuffer(char*buffer,unsignedintsize);,我无法对其进行任何更改。我有一个使用此API的类,我的函数的签名目前采用std::string和unsignedint作为大小,问题是当我将std::string.size()传递给函数的size参数时,我从编译器收到一条警告,将size_t转换为unsignedint可能导致数据丢失。我想知道是否有一种有效的方法可以将size_t转换为unsignedint,这样我就可以将它传递给我的API而不是从编译器得到警告?我理解size_t的目的,并且在

c++ - 如何在 C++ 中将 char* 转换为 unsigned short

我有一个char*name,它是我想要的短的字符串表示形式,例如“15”,需要将其作为unsignedshortunitId输出到二进制文件。此类型转换还必须是跨平台兼容的。这是正确的转换吗:unitId=unsignedshort(temp);请注意,我在理解二进制方面处于初级水平。 最佳答案 我假设您的char*name包含您想要的短的string表示,即"15"。不要将char*直接转换为非指针类型。C中的转换实际上根本不会更改数据(除了少数异常(exception))——它们只是通知编译器您要将一种类型转换为另一种类型。如果

c++ - 每次我知道我正在处理无符号值时,我都应该使用 "unsigned"吗?

通常已知值是正的。例如TCP/UDP序列号总是正值。int和unsignedint都足够大,甚至可以存储最大的sequencenumber,所以我可以使用这些类型中的任何一种。还有许多其他已知值为正的示例。当常规signed类型的容量足够(而且通常绰绰有余)时,是否有任何理由使用unsigned类型?我个人倾向于使用常规类型,因为:int可能比uint或unsignedint更具可读性我不需要为UINT等包含额外的header。我会避免在程序的其他地方进行额外的强制转换我能想到的使用unsigned类型的原因:帮助编译器生成更好的代码?帮助另一个程序员理解变量是无符号的避免可能的错误(