C++ 11标准是否保证零值有符号整数的一元减为零?

例如:

int zero = 0;
int n = -zero;
int m = -0;
assert(memcmp(&n, &zero, sizeof(int)) == 0);
assert(memcmp(&m, &zero, sizeof(int)) == 0);

我知道-00在两者的恭维表示中是相同的,但是我想知道该标准是否允许带符号整数零的取反对于其他表示形式(例如,一个人的恭维或符号幅度)为负零。

我可以在C++ 11草案中找到的是§5.3.1,第8段:



我在草案中找不到否定的定义。

动机:我正在为一个库编写一个专门的整数解析器(该解析器最终可能是开源的),我想知道是否应该担心"-0"被解释为负负有符号整数的可能性。不常见的架构。

注意:我已经知道负零浮点数。

最佳答案

该标准不要求整数必须使用位模式,因为它旨在适用于尽可能广泛的机器。对于C++编译器,完全有可能使用“ones-complement”,其中零和负零将是不同的。

关于c++ - C++ 11标准是否保证零值有符号整数的一元减为零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59743380/

10-11 22:42
查看更多