gpt4 book ai didi

c++ - C 在方程式中溢出?

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:47 25 4
gpt4 key购买 nike

a + b 如我所料从 255 溢出回到 4,然后 c/2 如我所料给出 2。但是,为什么最后一个例子在评估相同的两个步骤时不会溢出?

我猜内部计算值以更多位存储,然后在进行分配时仅被截断为 8 位。在那种情况下,限制在哪里,它必须在某个时候溢出?

uint8_t a = 250;
uint8_t b = 10;
uint8_t c = (a + b);
uint8_t d = c / 2;
uint8_t e = (a + b) / 2;

std::cout << unsigned(c) << ", " << unsigned(d) << ", " << unsigned(e) << "\n";

4, 2, 130

最佳答案

这叫做积分推广。这些操作本身是在您的 CPU 原生整数类型中完成的,int ,它可以容纳大于 255 的数字。在 a+b 中如果结果必须存储在 uint8_t 中,这就是截断完成的地方。在最后一种情况下,首先有一个作为 int 完成的除法。 , 结果可以完美地存储在 uint8_t 中.

关于c++ - C 在方程式中溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540638/

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