如何对变量做出否定? C ++

时间:2017-10-06 05:12:45

标签: c++ variables negative-integer

如果这个错误是拼写错误的结果,我很抱歉,但是当正确的语法应该是y = -x时,我无法弄清楚如何使我的变量为负;

DELETE FROM ...

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

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;

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

2 个答案:

答案 0 :(得分:1)

这无疑是一个签署问题。您已指定neg_loop_size为core::Sizecore::Size可能意味着长度式测量。长度不能是负数。 (“你今天跑多少公里,乔西?”,“为什么,我跑了4公里?”

因此,编译器和cout正确地将-1强制转换为“循环”到8字节可能的最高数。考虑:

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

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

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

答案 1 :(得分:0)

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

如果将值存储在整数中,则应获得所需的输出。

  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
$