gpt4 book ai didi

c++ - 模数和无符号整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:52 24 4
gpt4 key购买 nike

我发现以下行为令人惊讶:

int a = -2;
int b = 5;
uint c = 5;
std::cout << a%b << '\n';
std::cout << a%c << '\n';

Output:
-2
4

comparisons涉及,混合有符号和无符号是有问题的 - 运算符 % 中是否存在隐藏的比较,或者这里是否发生了其他事情?

最佳答案

假设uint是一个 unsigned不要输入比 int 更窄的 , 在计算表达式 a % c 时, a转换为 uint它将具有值 -2 + std::numeric_limits<uint>::max() + 1 .

对于 32 位 uint ,该数字为 4294967294,其模 5 为 4。

对于 16 位 uint ,这个数字是 65534,模 5 又是 4。

引用:https://en.cppreference.com/w/c/language/conversion

关于c++ - 模数和无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51260693/

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