Witam, mam następujące pytanie: Co zwraca funkcja abs() dla najbardziej ujemnej liczby? Natknąłem się na odpowiedź: "Największą możliwą ujemną liczbę w danym typie" ale jakoś nie jestem przekonany a przy sprawdzeniu w programie wychodzi mi zwykły moduł z tej liczby a tak chyba nie powinno być bo zakres.
0
0
Najlepiej będzie sprawdzić w dokumentacji danego języka programowania.
0
W dokumentacji jest tylko taka notka: "Return value The absolute value of n (i.e. |n|), if it is representable." tylko wtedy dlaczego wyświetla się normalnie skoro w przedziale mojego typu nie jest reprezentowalna http://en.cppreference.com/w/cpp/numeric/math/abs
1
Hmm, a może byś zwyczajnie sprawdził, jak to działa?
U mnie abs((-1)<<31) == ((-1)<<31)
. Kompilator GCC, Linux.
3
Przecież masz wyraźnie napisane, że jest UB, znaczy się może być różnie w zależności od kompilatora/parametrów kompilacji itd...