【发布时间】:2015-07-09 20:30:06
【问题描述】:
我知道整数值0 和-0 本质上是相同的。
但是,我想知道是否可以区分它们。
例如,我如何知道变量是否分配了-0?
bool IsNegative(int num)
{
// How ?
}
int num = -0;
int additinon = 5;
num += (IsNegative(num)) ? -addition : addition;
-0的值在内存中的保存方式是否与0完全相同?
【问题讨论】:
-
对于整数,没有区别。
-
这取决于实现,但对于
int以 2 的补码表示的实现(迄今为止最常见的情况),0和-0具有相同的按位表示。 -
在 2 的补码机器上,比特级没有区别。
-
@VirtualSnake:“二进制”是什么意思?事实上,在二进制编码中有 -0 和 0 之间的区别。例如,符号和幅度。
-
@VirtualSnake 没错,我们说的是
int。见Ones' complement encoding。
标签: c++ int zero negative-number