[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Problemas e Crítica
- Subject: Re: Problemas e Crítica
- From: "Rubens Altimari" <rubens@bcc2000.net>
- Date: Thu, 3 May 2001 22:30:09 -0300
>O seu exemplo não se aplica a um compilador que siga fielmente as normas da
linguagem C
Revisando meu comentário: o compilador Windows não estava "errado"! É
perfeitamente legal fazer a[-4]! As regras de subscripting também são
claras: em C, e1[e2] é _precisamente_ equivalente a *((e1)+(e2)). Por
exemplo:
char buffer[100], *bufferpointer, c;
bufferpointer = &buffer[6];
c = bufferpointer[-4]; /* = buffer[2] */
Ou seja, o problema não era nem dos compiladores (Linux e Windows) nem
dos sistemas operacionais: sintaticamente estava tudo correto, mas havia um
problema de lógica, a ordem dos argumentos deveria estar ao contrário. O que
houve, então, foi "circunstancial": o fato de estar errado não significa que
vá dar pau sempre. Se dá pau ou não depende tanto de "sorte" (no sentido de
acaso) como de como o SO funciona. Eu posso invadir uma área reservada e não
dar pau. Mesmo estando errado, claro.
Ter dado pau no Linux e não no Windows, portanto, não quer dizer nada,
neste caso, o programa estava errado de todo jeito!
Rubens