草庐IT

符号化

全部标签

c++ - 为什么 C/C++ 按位异或运算符关心符号?

这个问题在这里已经有了答案:ImplicittypeconversionrulesinC++operators(9个回答)Howdopromotionrulesworkwhenthesignednessoneithersideofabinaryoperatordiffer?[duplicate](3个答案)关闭4年前。一段时间以来,我一直在努力处理一些低级别的消息传递,结果证明这是校验和计算的问题。我认为按位XOR运算符不关心符号,所以我使用QByteArray来存储字节,并使用at方法返回char,计算校验和。这些消息有时会得到适当的确认,但并非总是如此。看起来另一端的人正在使用ui

c++ - 列出未使用的符号

我想从一个大型项目中删除无效代码,并希望从未使用的符号开始。无论如何让链接器列出它已经优化掉的未使用的符号?我将GNU链接器(LD)与GCC一起使用。否则,任何Binutils(readelf或objdump)都可以执行相同的功能吗? 最佳答案 大多数编译器/链接器优化掉未使用的符号。如果您在*nix系统上运行,您可以尝试在所有目标文件上使用命令“nm”,对其进行过滤和排序,以生成由这些目标文件定义的所有导出函数的列表。nm*.o|grep"^[0-9a-f]*T"|sed's/^[0-9a-f]*T//'|sort-u>symbo

c++ - 如何预测具有符号数字类型的东西?

假设我有一些执行以下操作的模板化代码:Tx=foo();Ty=-x;现在,如果T是非数字类型(或者没有实现一元负号),编译将简单地失败。但如果是unsignedint、unsignedshort等,它会成功,但会出现警告。所以我希望能够做到Tx=foo();if(/*magiccondition*/{Ty=-x;}我能否写出T的类型是某种有符号数字类型的条件(在编译时或运行时检查)?例如使用typeid?注意:断言也不错,但我想要更灵活的东西。 最佳答案 C++11具有is_unsigned特性,您可以在static_assert中

c++ - 是否可以用 CMake 将某些符号替换为不同的符号?

我正在尝试使用CMake制作可执行文件。此可执行文件需要位于项目中的文件的完整路径。intmain(){std::ifstream("fullpath_to_file");//....}我认为如果CMake可以用用户指定的字符串替换源代码中的某些符号,就不需要硬编码完整路径了。例如,如果CMake可以将源代码(cpp)中的${CMAKE_PROJECT_DIR}替换为${PROJECT_SOURCE_DIR}之类的cmake变量,那么我就可以这样编写源代码。intmain(){std::ifstream("${CMAKE_PROJECT_DIR}/input/my_input.txt"

c++ - 权威的 “correct”方法,用于针对size_t测试循环变量时避免有符号/无符号警告

下面的代码生成一个编译器警告:privatevoidtest(){bytebuffer[100];for(inti=0;iwarning:comparisonbetweensignedandunsignedintegerexpressions[-Wsign-compare]这是因为sizeof()返回一个size_t,它是无符号的。我已经看到了许多有关如何处理此问题的建议,但是没有一个建议有很多的支持,也没有一个有任何令人信服的逻辑,也没有任何支持一个方法明显“更好”的引用。最常见的建议似乎是:忽略警告关闭警告使用类型为size_t的循环变量使用带有技巧的size_t类型的循环变量来避

c++ - 使用无符号数据类型来强制执行非负值和/或有效值是最佳做法吗?

最近,在重构session期间,我正在查看我编写的一些代码并注意到几件事:我的函数使用unsignedchar强制值在[0-255]区间内。其他函数使用int或long数据类型以及函数内部的if语句来静默限制值到有效范围。类中包含的值和/或声明为具有未知上限但已知且确定的非负下限的函数的参数被声明为unsigned数据类型(int或long取决于upperbound的可能性超过4,000,000,000)。这种不一致令人不安。这是我应该继续的好做法吗?我是否应该重新考虑逻辑并坚持使用int或long以及适当的非通知钳位?关于使用“适当”的注意事项:在某些情况下,我使用signed数据类

c++ - 隐式转换将符号 'int"更改为 'unsigned int"

我正在使用clang++编译程序,我需要在clang++中正确编译它。我在其他编译器上没有错误。代码中的错误行是memset(grid_,0,sizeof(int)*x_quadrants*y_quadrants);整个函数是这样的:Ocean::Ocean(intnum_boats,intx_quadrants,inty_quadrants){grid_=newint[x_quadrants*y_quadrants];memset(grid_,0,sizeof(int)*x_quadrants*y_quadrants);x_quadrants_=x_quadrants;y_quadr

用于符号数学的 Python 库——sympy(二):常用信号的Laplace变换

关于拉普拉斯变换的作用,可参考知乎总的来说,拉普拉斯变换就是迫使函数满足绝对可积条件的傅里叶变换。常用信号的Laplace变换参考信号与系统/陈后金,胡健,薛健.——2版.——北京:清华大学出版社;北京交通大学出版社,2005.7(2017.3重印)第218-219页。序号    单边信号(f(t))    Laplace变换(F(s)F(s)F(s))    收敛域    1e−λtu(t)e^{-\lambdat}u(t)e−λtu(t)1s+λ\frac{1}{s+\lambda}s+λ1​Re(s)>−λRe(s)>-\lambdaRe(s)>−λ2ejω0tu(t)e^{j\omeg

c++ - 在 C++ SIMD 中将带符号的短整数转换为 float

我有一个带符号的short数组,我想将其除以2048并得到一个float数组。我找到了SSE:convertshortintegertofloat允许将unsigned短裤转换为float,但我也想处理已签名的短裤。下面的代码有效,但仅适用于正短路。//Wewanttodividesomesignedshortby2048andgetafloat.constautofloatScale=_mm256_set1_ps(2048);short*shortsInput=/*valuesfromsomewhere*/;float*floatsOutput=/*initialized*/;__m

c++ - 杀死无符号/有符号比较错误

一般来说,我想要未签名与已签名的警告。但是,在这种特殊情况下,我希望它被抑制;std::vectorblahs;for(inti=0;i我想取消这种比较。谢谢!(使用g++) 最佳答案 你应该修复,而不是压制。使用无符号类型:for(size_ti=0;i您也可以使用unsigned,但是size_t在这里更合适(并且可能有不同的、更大的范围)。如果您只使用i进行迭代并且在循环中不需要它的值,请改用迭代器:for(autoiter=blahs.begin(),end=blahs.end();iter!=end;++iter)如果你的