[ Foro de C ]

duda con incrementos y decrementos

07-Jul-2014 23:35
Invitado (sara)
6 Respuestas

Tengo una duda con este ejercicio del apartado incrementos y decrementos del pdf (página 46)
(2.1.10.2) ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=++a; c=a++; b=b*5; a=a*2;
Tengo esto de código, primero quería probarlo con una operación por eso no está todo el código al completo:
#include<stdio.h>
//¿Cuál sería el resultado de las siguientes operaciones? a=5; b=++a; c=a++; b=b*5; a=a*2;


int main()
{
	int a=5;
	int b=++a;
	int c=a++;
	
	printf("el primero es %d",b=++a);
	return 0;
}


cuando lo compilo me sale que b=7, cuando no me tendría que dar eso...
¿qué tengo mal?
Gracias de antemano!


08-Jul-2014 00:02
Nacho Cabanes (+84)

Claro que te tiene que dar eso en tu programa: "a" empieza valiendo 5, y haces dos veces "b = ++a" luego a termina valiendo 7, y lo mismo valdrá "b".


08-Jul-2014 10:00
Invitado (sara)

OSTRAS!!! es verdad.... lapsus.
Muchas gracias :)


08-Jul-2014 16:20
Invitado (sara)

Pero es que el problema es que ahora al compilarlo me sale que b=8....
y es el mismo código que el de ayer... qué está mal?


08-Jul-2014 16:22
Invitado (sara)

y ahora lo vuelvo a compilar y me sale que b=7...
pero qué pasa?
gracias


08-Jul-2014 16:30
Invitado (sara)

vale, creo que ya sé lo que estaba mal.... os dejo el código a ver si está bien o tiene algún error.


int main()
{
	int a=5;
	int b=++a;
	
	printf("La primera operacion es %d\n", b=++a);
	
	int c=a++;
	printf("La segunda operacion es %d\n", c=a++);
	printf("La tercera operacion es %d\n", b=b*5);
	printf("La cuarta operacion es %d", a=a*2);
	
	return 0;
}




08-Jul-2014 16:54
Nacho Cabanes (+84)

Una recomendación : no intentes compactar tanto. Separa las órdenes que hacen cálculos de la ordenes que escriben. Los símbolos de  "=" dentro de un "printf" son una fuente de despistes y de errores difíciles de encontrar.  Si haces tu código evidente, los errores serán más evidentes que si intentas "abreviar".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)