Итак, у меня есть включено следующее:64битного вопрос Вычитания
size_t Num2= 2359198081
size_t Num1= 2359197799
size_t Diff= Num2 - Num1;
если я,
std::cout << "Diff: " << Diff;
я,
Diff: 18446744071938113404
Если я делать int64_t вместо size_t то как и ожидалось, я получаю отрицательное значение, так как Num2 и Num1 больше 2 повышений до 32
Если я,
std::cout << "Diff: " << Num2 - Num1 << std::endl;
Тогда я получаю,
Diff: 282
, который, как ожидалось.
Что я здесь делаю неправильно? скорее, как я могу заставить это сделать правильное 64-битное вычитание?
Показать реальный код. То, что вы описываете, не имеет смысла, поэтому должно произойти что-то, о чем вы не говорили. Предоставьте программу, которая компилирует, запускает и показывает проблему. –
'size_t' - это неподписанный тип. Если вы ожидаете отрицательного значения, настройте свои ожидания. И показать реальный код; с тем, что вы показали, 'Num2 - Num1' дает 282. Возможно, вы вычисляете' Num1 - Num2'?Прочитайте это: [mcve] –
Как вы можете получить отрицательное значение с помощью целых чисел unsigned? –