gpt4 book ai didi

c++ - std::cout 如何在补码系统中打印负零?

转载 作者:IT老高 更新时间:2023-10-28 22:21:02 30 4
gpt4 key购买 nike

在一个反码平台上,下面的代码会打印什么?

#include <iostream>

int main() {
int i = 1, j = -1;

std::cout << i+j << std::endl;
return 0;
}

我怀疑它会打印“0”而不是“-0”,但我似乎找不到任何权威。

编辑:澄清一下,我对如何打印 -0 很感兴趣,有几个人建议在实践中,使用上面的代码实现 one-compliment 可能不会生成负零.

在这些情况下,建议使用以下方法实际生成 -0:

#include <iostream>

int main() {
std::cout << ~0 << std::endl;
return 0;
}

问题仍然存在:这会打印什么?

最佳答案

首先,为了澄清一点,使用按位运算制作负零然后使用结果值是不可移植的。也就是说,fprintf 的文档中没有任何规定。 (因此,std::basic_ostream::operator<<(int) ) int 表示中的符号位是否对应于 unsigned 表示中的填充位或实际值位。

作为结论,这是未指定的行为。

#include <iostream>

int main() {
std::cout << ~0 << std::endl;
return 0;
}

关于c++ - std::cout 如何在补码系统中打印负零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151068/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com