减去 2 size_t ...一些奇怪的结果

Substract 2 size_t ... some weird results

这是我的代码:

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

输出给我:3525 - 150000 = 18446744073709405141 我仍然不知道为什么?可能是因为它们没有签名?

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

谢谢!

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

正是因为它们没有签名。您需要将两者都转换为带符号的类型才能获得带符号的结果。例如:

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

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