如何使变量为负数? C++

How to make negative of a variable? C++

如果此错误是拼写错误造成的,我深表歉意,但我不知道如何在正确语法应为 y=-x 时使我的变量为负数;

std::cout << "loop size = " << loop_size_ << std::endl;
core::Size neg_loop_size_ = -loop_size_;
std::cout << "neg loop size = " << neg_loop_size_ << std::endl;

当我 运行 它时,这是我得到的结果:

loop size = 4
neg loop size = 18446744073709551612

如何获得等于 -4 的新变量?

这无疑是一个签名问题。您已指定 neg_loop_size 为 core::Sizecore::Size 可能是一种长度测量方式。长度不能为负。 ("How many kilometers did you run today, Josy?", "Why, I ran negative 4 kilometers!")

因此,编译器和 cout 正确地将 -1 强制转换为 "loop around" 到 8 字节的最大可能数。考虑:

   18446744073709551612 + 4 - 1
 = 2^65 -1
 = 0xFFFFFFFFFFFFFFFF
 = (core::Size) 0 - 1

如果您想要负值,您需要自己进行一些字符串操作和转换,或者选择编译器和 cout 将解释为负数的数据类型。例如:

int i = 0;
i -= 1;
std::cout << "i = " << i << std::endl;

我认为问题是 Core:Size 数据类型是无符号的。所以你有问题。

如果您将值存储为整数,您应该会得到所需的输出。

  int main() {
      int i = 5;
      int j = -i;
      cout<<endl<< j << endl;

     return 1;
}

输出---

$>:~/tmp$ vim c.cpp
$>:~/tmp$ g++ c.cpp
$>:~/tmp$ ./a.out
-5
$