Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
fredericopissarra

Como é que vocês lidam com isso?

Posts Recomendados

Exceto linguagens como Python, onde os tipos integrais são "big numbers", ou seja, não estão restritos a uma quantidade delimitada de bits, em linguagens como C, C++, ... que têm tipos definidos, como é que vocês fazem para detectar overflows em operações aritméticas?

Notaram que não há como acessar os flags da status word do processador, diretamente, nessas linguagens? Ou será que nunca pensaram nisso?

Por exemplo, numa expressão:

x += y;

Se x for do tipo int, como saber se ele extrapolou o limite superior? (se int tem 32 bits, o limite superior é, obviamente, +2³¹-1.  Ao incrementar ele passa a ser -2³¹... Pode-se verificar o sinal, mas temos que ter um método mais "genérico" porque y pode ser negativo também... se x for -2³¹ e y for -1, também teremos um overflow...

Existe o método simples e um mais genérico... Que não vou mostrar aqui no interesse de causar uma discussão (um Forum serve pra isso, não?)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação a minha alegação sobre Python:

$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x=2**31-1
>>> x
2147483647
>>> x+1
2147483648
>>> x=2**64-1
>>> x
18446744073709551615
>>> x+1
18446744073709551616L
>>> x=2**128-1
>>> x
340282366920938463463374607431768211455L
>>> x+1
340282366920938463463374607431768211456L
>>>

 

Editado por fredericopissarra

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 horas atrás, fredericopissarra disse:

Acredito que tenha sido isso o que eu disse...

A minha resposta é um grosso modo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons no total são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...