Uno de mis amigos me mostró este programa y me preguntó por qué la variable i
se incrementaba dos veces.¿Por qué la variable "i" se incrementa dos veces en mi programa?
Según mi entendimiento MAX(i++, ++j);
en esta línea i
se enviará primero como un parámetro y luego incrementado, por lo que si el valor inicial de i
es 10
entonces el valor incrementado debería haber 11
, pero muestra el valor incrementado de i
como 12
.
Programa:
#include<stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)
void main(void)
{
int i = 10;
int j = 5;
int k = 0;
k = MAX(i++, ++j);
printf("%d %d %d",i,j,k);
}
Salida:
por favor alguien puede explicar cómo se incrementa el valor a 12?
Gracias.
Asimismo, recuerda que 'main' debe devolver un' int'! – peoro
Sin duda, esto debe ser un duplicado de alguna pregunta anterior? –
@larsmans Podría ser que ni siquiera yo sepa exactamente qué buscar este tipo de problema. – Searock