On Thursday, 28 July 2022 at 04:30:33 UTC, dunecourser wrote:
>On Thursday, 28 July 2022 at 04:27:19 UTC, dunecourser wrote:
>On Thursday, 28 July 2022 at 04:27:19 UTC, dunecourser wrote:
Underflow vb. terimler de var elbette, basitleştirmek için sadece overflow kullandım.
Underflow nedir, ben bilmiyorum? Ama aritmetik işlemler neticesinde meydana gelen taşmalar (overflow) için ilgili konunun sayfasında şöyle bir dış kaynak verilmiş:
How Should You Write a Fast Integer Overflow Check?
Öte taraftan core.checkedint olanaklarını şu şekilde kullanabiliyoruz:
// İşaretsiz için:
import core.checkedint;
void main(){
bool overflow;
for (uint i = 0; i < 10; ++i)
{
bool overflow;
immutable uint r = addu (uint.max - i, uint.max - i, overflow);
assert (r == 2 * (uint.max - i));
assert (overflow);
}
// İşaretliler için:
overflow = false;
assert(adds(int.min + 1, -1, overflow) == int.min);
assert(!overflow);
assert(adds(int.max, 1, overflow) == int.min);
assert(overflow);
}
Fakat bu işlemler biraz maliyetli olsa da modern derleyiciler bunları daha hızlı kod oluşturmada becerikli olabilirmiş.
Kolay gelsin...