减去 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;
您实际使用的签名类型取决于您的编译器。请注意,将无符号类型转换为不更大的有符号类型会导致数据丢失。
这是我的代码:
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;
您实际使用的签名类型取决于您的编译器。请注意,将无符号类型转换为不更大的有符号类型会导致数据丢失。