Substract 2 size_t ...一些奇怪的结果

时间:2015-11-06 20:42:54

标签: size-t

这是我的代码:

std::cout << _cSample << " - " << _bSample 
             << " = " << (_cSample - _bSample) << std::endl;

输出结果告诉我:3525 - 150000 = 18446744073709405141 我还不知道为什么?也许是因为他们没有签名?

我如何减去2 size_t?在这里,我希望得到一个基本的减法结果 我在互联网上搜索没有成功。

谢谢!

查看输出:puu.sh/lbPW5/5f998c0c02.png

1 个答案:

答案 0 :(得分:0)

这完全是因为他们没有签名。您需要将两者都转换为签名类型才能获得签名结果。例如:

std::cout << _cSample << " - " << _bSample 
         << " = " << ((__int64)_cSample - (__int64)_bSample) << std::endl;

您使用的实际签名类型取决于您的编译器。请注意,将无符号类型转换为不大的带符号类型会导致数据丢失。