Istnieje wiele pytań dotyczących wykrywania przekroczenia liczby całkowitej PRZED faktycznym dodawaniem/odejmowaniem ze względu na możliwe undefined behavior
. Więc moje pytanie brzmi:Przepełnienie całkowite i niezdefiniowane zachowanie
Po pierwsze, dlaczego wyprodukuje to undefined behavior
?
można myśleć 2 powoduje:
1) procesora, który powoduje wyjątek w tym przypadku. Oczywiście, można go wyłączyć i najprawdopodobniej zrobi to dobrze napisany CRT.
2) Procesor wykorzystujący inne reprezentacje binarne liczb (uzupełnienie 1 - podstawa 10?). W takim przypadku niezdefiniowane zachowanie przejawia się jako inny wynik (ale nie ulegnie awarii!). Cóż, moglibyśmy z tym żyć.
Dlaczego więc ktoś powinien unikać powodowania? Czy czegoś brakuje?
Obowiązkowe łącze: http://blog.regehr.org/archives/213 –
powiązane: http://stackoverflow.com/questions/18195715/why-is-unsigned-integer-overflow-defined-behavior-but- signed-integer-overflow-is –