草庐IT

c++ - 有符号和无符号之间的 SFINAE 区别

我有将不同算术类型转换为半精度浮点类型的函数(在最低级别上只有一个uint16_t),我有不同的整数和浮点源类型函数,使用SFINAE和std::enable_if:templateuint16_tto_half(typenamestd::enable_if::value,T>::typevalue){//floattohalfconversion}templateuint16_tto_half(typenamestd::enable_if::value,T>::typevalue){//inttohalfconversion}这些是通过显式实例化从通用模板构造函数内部调用的:temp

c++ - ptrdiff_t 的无符号拷贝是什么?

ptrdiff_t的无符号拷贝是什么?类似地-size_t的签名拷贝是什么?我想要实现的是拥有一个无符号类型,我可以使用它来存储ptrdiff_t变量的正值,而不必担心大值-这似乎是size_t.相反-我希望有一个签名类型,我可以存储size_t的值,同样不用担心大值。 最佳答案 我认为ptrdiff_t没有正式的无符号对应项(没有uptrdiff_t),但是使用size_t是相当合理的.在POSIX中,size_t的签名拷贝是ssize_t。它是read()等函数返回的类型,例如。这表明ssize_t和ptrdiff_t的底层类型

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++ - 在 C++ 中使用 const 的指针和符号位置

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Declaringpointers;asteriskontheleftorrightofthespacebetweenthetypeandname?我一直想知道放置*和&的确切正确位置是什么。似乎C++对放置这些标记的位置相当宽容。例如,我似乎将指针和符号放在关键字的左右两侧或两个关键字的中间,但令人困惑的是,有时它们似乎意味着同一件事,尤其是与const一起使用时>voidf1(structure_typeconst¶meter)voidf2(structure_typeconst¶meter

C++:错误 LNK:无法解析的外部符号,由虚函数产生

我的界面的类等概览!Animal.H:classAnimal{public:virtualvoidwalk();}动物.CPP=空牛.H:classCow:publicAnimal{public:virtualvoidwalk();}在这里它应该自动知道函数walk是从它派生的类中获取的,对吗?(例如Animal..)当我不定义函数walk时,它应该说我应该正确定义它......?Cow.CPP:voidCow::walk(){//dosomethingspecificforcow}SomeOtherClass.HnamespaceSomeNamespace{voidLetAnimal

c++ - &符号 "&"在指针前面做什么?

当函数被调用时,我经常在函数参数的指针前面看到&符号。例如int*ptr;randomFunction(&ptr);我做了一些研究,发现这意味着该函数使用指向指针的指针。指针前面的&符号只是用来表示这一点还是做其他事情? 最佳答案 是指向指针的指针。&是引用操作符,可以读作addressof。在您的示例中,它将获得另一个指针,即作为参数给出的指针的地址,即指向指针的指针。看下面的例子:int**ipp;inti=5,j=6,k=7;int*ip1=&i,*ip2=&j;ipp=&ip1;您将获得:在上面的例子中,ipp是一个指向指针

c++ - 命名空间中的内联函数在 gcc 链接期间生成重复符号

我有一个带有内联函数的命名空间,如果有多个源文件,它将被使用。尝试链接我的应用程序时,内联函数被报告为重复符号。似乎我的代码根本不会内联函数,我想知道这是否是预期的行为以及如何最好地处理它。我使用以下gcc选项:-g-Wextra-pedantic-Wmissing-field-initializers-Wredundant-decls-Wfloat-equal-Wno-reorder-Wno-long-long在VC7环境中构建时,相同的代码风格似乎可以正确编译和链接。下面的代码示例展示了代码的结构:/*header.h*/namespacemyNamespace{inlineboo

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

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

c++ - 符号计算

有人知道用C++进行代数计算的好方法/库吗?我有一个正在用C++开发的应用程序,它需要进行代数计算。现在我构建了一个C++解析器,它接受字符串形式的表达式,例如“5+(2-MYFUNC(3))”,它被标记化为结构,然后使用调车场算法转换为后缀表示法并进行评估。这些表达式中的MYFUNC是我自己定义的函数,可以进行一些复杂的计算。这是一个高性能的应用程序,表达式也有动态替换为值的变量,并且表达式被重新计算例如var1+(2-MYFUNC(var2))->在运行过程中将var1和var2替换为一些值并重新计算我使用的是Linux,到目前为止找到了Giaclibrary但不确定它是否好,欢迎

c++ - 为什么 opencv 的 Mat::rows 和 Mat::cols 是有符号的而不是无符号的?

我正在用gcc的-Wall标志编译一个程序。我在某些时候对Mat::cols和Mat::rows进行了比较(使用无符号整数),并收到有关比较有符号和无符号整数的警告。虽然放弃它没什么大不了的,但我很好奇Mat具有负大小的基本原理是什么。从逻辑上讲,矩阵不能比空矩阵(0行0列)更空,那么具有-1行或-1列的矩阵意味着什么?Theredoesn'tseemtobemuchperformancedifferencebetweencomputationsonsignedandunsignedintseither. 最佳答案 我想是因为int