Foros del Web » Programación para mayores de 30 ;) » C/C++ »

incremento

Estas en el tema de incremento en el foro de C/C++ en Foros del Web. hola, tengo estas dos lineas e c: int i=10; printf("%d%d%d",++i, i++, ++i); El resultado según el test de dónde las saque es "13 11 11" ...
  #1 (permalink)  
Antiguo 26/02/2016, 08:24
 
Fecha de Ingreso: enero-2010
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 0
incremento

hola, tengo estas dos lineas e c:

int i=10;
printf("%d%d%d",++i, i++, ++i);

El resultado según el test de dónde las saque es "13 11 11" pero si las ejecuto en mi ordenador me da "13 11 13". No entiendo ninguno de los dos resultados. recurro a ustedes de nuevo! alguien me orienta? gracias!
  #2 (permalink)  
Antiguo 26/02/2016, 14:15
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: incremento

Esta es una de las típicas cosas a evitar cuando estás programando. La explicación completa es demasiado larga para ponerla aquí.

La versión abreviada es que estás combinando diferentes tipos de modificaciones sobre una misma variable en una misma instrucción y eso es algo que no suele estar sujeto al estándar.

Dependiendo de las optimizaciones que haga el compilador podría decidir procesar primero la 3ª i, después la 2ª y finalmente la primera, en cuyo caso el resultado sería 13,11,11 pero como has comprobado no tiene por qué ser así.

Explicación a 13,11,11:
Código C:
Ver original
  1. int i=10;
  2. int j = ++i; // j=11, i=11
  3. int k = i++; // k=11, i=12 (es un postincremento)
  4. int l = ++i; // l=13, i=13
  5. printf("%d%d%d,l,k,j);

Pero vamos, que es algo poco relevante partiendo de la base de que esto no se debe hacer

Pasa de libros donde expliquen cosas de estas porque seguramente estén ya desfasados.

PD.: Si quieres conseguir este efecto sin saltarte el estándar precalcula los valores y después los imprimes... cada cosa en su propia línea (tal y como aparece en el ejemplo que te he puesto antes). Esa forma te va a funcionar SIEMPRE igual independientemente del compilador que utilices.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 07/03/2016, 10:12
 
Fecha de Ingreso: enero-2010
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: incremento

entendido! muchas gracias!!!

saludos!!

Etiquetas: incremento, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:50.