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

时间:2020-12-26 01:55:29
【文件属性】:
文件名称:C++小知识:大于0并不意味着等于1
文件大小:55KB
文件格式:PDF
更新时间:2020-12-26 01:55:29
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 或者小

网友评论