gpt4 book ai didi

c++ - Signed-Unsigned 加法行为异常

转载 作者:行者123 更新时间:2023-12-01 14:47:46 26 4
gpt4 key购买 nike

我了解到在对有符号和无符号整数执行算术运算时,有符号整数将被提升为无符号整数。

基于此,我无法解释这种行为:

unsigned int u = 1000;
signed int i = -1;

std::cout << i + u << std::endl;

当我运行这段代码时,我得到 999。我期待我会被转换为无符号,将 -1 值转换为 4294967295。

最佳答案

其实是。有符号 -1 实际转换为无符号 4294967295。但无符号 1000 + 无符号 4294967295 是 4294968295,超出范围的位被截断后是 999。在二进制补码表示中添加(或减去)有符号数具有这种有趣的行为,如果您在“有符号”或“无符号”模式下进行加法实际上无关紧要(仅在检测溢出时有所不同 - 这无法通过C/C++)。

关于c++ - Signed-Unsigned 加法行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61929063/

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