Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 64位无符号减法问题_C++_64 Bit_Subtraction - Fatal编程技术网

C++ 64位无符号减法问题

C++ 64位无符号减法问题,c++,64-bit,subtraction,C++,64 Bit,Subtraction,因此,我有以下几点- size_t Num2= 2359198081 size_t Num1= 2359197799 size_t Diff= Num2 - Num1; 如果我这样做 std::cout << "Diff: " << Diff; 如果我用int64而不是size,那么正如预期的那样,我会得到一个负值,因为Num2和Num1都大于2,所以会上升到32 如果我这样做 std::cout << "Diff: " << Num2 -

因此,我有以下几点-

size_t Num2= 2359198081
size_t Num1= 2359197799

size_t Diff= Num2 - Num1;
如果我这样做

std::cout << "Diff: " << Diff;
如果我用int64而不是size,那么正如预期的那样,我会得到一个负值,因为Num2和Num1都大于2,所以会上升到32

如果我这样做

std::cout << "Diff: " << Num2 - Num1 << std::endl;

std::cout您能否按照其他人的要求在评论中发布您的代码(抱歉,由于50+代表要求,无法发表评论)。由于
size\u t
unsigned int
unsigned long int
,减法应产生282,除非您使用的机器/编译系统实现的
unsigned int
小于32位


我尝试了这个,它工作正常(64位)。由于您的示例中的
Diff
正在打印
0xffffff966a0000
,因此我猜您在
size\u t
上也使用了64位实现。更多可以说,只有当你张贴你的完整代码

问题是,您的意思是说
Diff=Num2-Num1
,但您无意中说了
Diff=Num1-Num2

size_t Num2= 2359198081;
size_t Num1= 2359197799;
size_t Diff = Num1 - Num2;
std::cout << Diff << std::endl;
印刷品:

282

这就是你想要的


显示真实代码。你所描述的没有意义,所以一定有一些事情你没有提到。提供编译、运行和显示问题的程序。
size\t
是无符号类型。如果你期望一个负值,调整你的期望值。并显示真实代码;根据您所展示的,
Num2-Num1
生成282。您可能正在计算Num1-Num2吗?阅读以下内容:如何使用
无符号
整数获得负值?@ThomasMatthews:OP在该场景中使用
int64\t
。下次使用复制/粘贴将代码放入问题。愚蠢的规则。拿你的50块钱,耶!让我们评论一下!谢谢
size_t Num2= 2359198081;
size_t Num1= 2359197799;
size_t Diff = Num1 - Num2;
std::cout << Diff << std::endl;
size_t num2 = 2359198081;
size_t num1 = 2359197799;
size_t diff = num2 - num1;
std::cout << diff << std::endl;