Daniel Serpell <[EMAIL PROTECTED]> dijo:

[...]

> Aunque no lo creas, todo compilador de C compatible con el estándar debe
> tragarse lo siguiente, e incluso generar código válido:
> 
> h(i) {
>  return i["0123456789ABCDEF"];

Obvio. a[i] == *(a + i) == *(i + a) == i[a]. Aca 'a' es el arreglo de
caracteres (el string). Menos enredado es:

   return "0123456789ABCDEF"[i];

que hace exactamente lo mismo (y es igual de misterioso para el newbie ;-)

> }
> 
> char p[5];
> char *hh(i) {
>  p[4] = 0;
>  p[3] = h(i&15);
>  p[2] = h((i>>=4)&15);
>  p[1] = h((i>>=4)&15);
>  p[0] = h((i>>=4)&15);
>  return p;

Retorna el arreglo global 'p', que "magicamente" se transforma en puntero a
su 0-esimo elemento cuando se le mira de frente. Como p[4] == '\0', esto es
un string valido. La magia tonteando con bits transfiere 'i' un digito
hexadecimal a la vez a 'p'.

> }
> 
> main() {
>  int puts(char *);
>  puts(hh(getpid()));
> }
> 
> Tarea para la casa: ¿por qué funciona?.

Otra tarea: En que maquinas _no_ funciona? Porque?

Que lindo es C...

Busquen ganadores del Obfuscated C Contest para algunas joyitas.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513
From [EMAIL PROTECTED]  Mon Nov 22 14:48:03 2004
From: [EMAIL PROTECTED] (Horst von Brand)
Date: Mon Nov 22 14:48:06 2004
Subject: OT: Pregunta de C 
In-Reply-To: Your message of "Fri, 19 Nov 2004 18:35:10 -0300."
        <[EMAIL PROTECTED]> 
Message-ID: <[EMAIL PROTECTED]>

Roberto Bonvallet <[EMAIL PROTECTED]> dijo:
> Claudio Saavedra V. escribio:
> > On Fri, 2004-11-19 at 12:36, Gustavo Chain wrote:
> > >
> > >   Bueno si, es lamentable, el libro justamente se edito en el '89.
> > >   De todas formas, como sera la forma correcta de esecodigo?
> > 
> > main (int argc, char **argv)
> 
> Malo! El valor de retorno de main debe ser declarado entero.

Si no se declara el tipo de una funcion, por omision es int. Esto es
totalmente valido, aunque se considera un tanto grosero.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513
From [EMAIL PROTECTED]  Mon Nov 22 15:04:06 2004
From: [EMAIL PROTECTED] (=?ISO-8859-1?Q?Germ=E1n_Po=F3_Caama=F1o?=)
Date: Mon Nov 22 15:04:14 2004
Subject: problema MIME
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

El lun, 22-11-2004 a las 14:06 -0300, Rodrigo Henriquez M. - Corporacion
Linux S.A. escribió:
> El jue, 18-11-2004 a las 23:05, German Poo Caaman~o escribió:
> [...]
> > 
> > Envialo con copia a ti y verifica que haya pasado por todo el 
> > procesamiento que le aplicas.
> > 
> > Aunque la combinacion Postfix + Mailscanner no es fiable.  
> 
> Por que lo dices?

Por lo que he dicho montones de veces ya :-)

De http://www.postfix.org/ 

"mailscanner system, works with Postfix and other MTAs. This uses
unsupported methods to manipulate Postfix queue files, and there are
multiple reports of message duplication and/or delivery of truncated
messages."

Para muestra un boton de Agosto de 2004:
http://archives.neohapsis.com/archives/postfix/2004-08/0702.html

cuya respuesta es de Wietse Wenema (autor de Postfix).

-- 
Germán Poó Caamaño
http://www.ubiobio.cl/~gpoo/

Responder a