[C con Clase] Duda sencilla

David Reza l.fix3r.l en gmail.com
Mar Jun 10 01:22:12 CEST 2008


Dati Young clear escribió:

>
> hola hola, lo que esta operación hace, es lo siguiente:
>
> --->(--b*a++)/b, y lo que me parece raro, es que al poner "a++", no  
> le sume uno más a 1, o sea, 16.
> Acá tienes que (menos menos b (+b) por a más más (que  
> supuestamente debería ser 15+1))/b, lo realicé y me dá: 45/3=15...
>
> Alguien me puede explicar el porqué del "a++" (por qué no le aumenta 
>  un valor?)
> (para que no se preste para malos entendidos: ---> una flecha)

Los operadores de post-incremento y post-decremento se realizan  
después de haber resuelto toda la operación princpal.

Los de pre-incremento y pre-decremento se realizan antes de resolver  
la operación principal.

Con esto tenemos que en la operación:

int a = 15, b = 3;
b = --b * a++ / b;

se realizan primero los "pre", en este caso el pre-decremento --b, con  
lo que ahora 'b' tiene el valor de 2. Luego este valor se multiplica  
por 'a' que vale 15:   2*15 = 30.
Después dividimos el resultado entre 'b' que vale 2:   30 /2 = 15 y  
este valor se almacena en 'b'.

Por último realizamos los "post", en este caso post-incremento de 'a',  
por lo que el valor final de 'a' será 16.

En sí las variablea tendrían los siguientes valores:

A  ->  16
b  ->  15

Saludos


> Por qué si
>
>    int a = 15, b = 3;
>
>    La expresión:
>
>    b = --b * a++ / b;
>
> Genera para b el valor 15
>
> Supongo que es un asunto de precedencia de operadores.
>
> Saludos
>
> Ismael
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080609/ea124b88/attachment.html>


Más información sobre la lista de distribución Cconclase