C++小知识:大于0并不意味着等于1

时间:2024-01-15 19:42:09
【文件属性】:

文件名称:C++小知识:大于0并不意味着等于1

文件大小:55KB

文件格式:PDF

更新时间:2024-01-15 19:42:09

c++ memcmp

注:本文所指出的错误例子其实非常简单,任何 C++ 的初学者都能看懂。但是这个错误也非常典型,估计很多非常严肃的代码里面都存在这样的错误。 这个 Bug 是来自于 CoreCLR 源代码。 错误代码: bool operator( )(const GUID& _Key1, const GUID& _Key2) const { return memcmp(&_Key1, &_Key2, sizeof(GUID)) == -1; } 解释: 你不能将 memcpy()、strcmp() 以及其他一些标准函数的返回值,和 1、-1 这些具体的数字做比较,因为这些函数的返回值只保证大于 0 或者小


网友评论