C

Signed integer overflow is undefined

Në shqip: Tejmbushja e numrave me shenjë

ShpjegimiSQ

Në C, tejmbushja e një int me shenjë është sjellje e papërcaktuar — kompajleri mund të supozojë që s'ndodh kurrë dhe ta „optimizojë“ kontrollin tënd. Tejmbushja e unsigned është e përcaktuar: rrotullohet.

EnglishEN

In C, overflowing a signed int is undefined behaviour — the compiler may assume it never happens and “optimise away” your check. Unsigned overflow is defined: it wraps around.

Si ta mendosh

Si kur dikush supozon që s'do të bjerë kurrë shi dhe e heq çatinë.

Lexoje në anglisht

Like someone assuming it'll never rain and removing the roof.

Shembull kodic

int x = INT_MAX;
x + 1;            // ✗ e papërcaktuar
unsigned u = UINT_MAX;
u + 1;            // ✓ bëhet 0

Terma të lidhur