如何使变量为负数? 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::Size
。 core::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
$
如果此错误是拼写错误造成的,我深表歉意,但我不知道如何在正确语法应为 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::Size
。 core::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
$