Skip to content

Instantly share code, notes, and snippets.

@phaya phaya/noaddup.c Secret
Last active Dec 24, 2015

Embed
What would you like to do?
¿Por qué el siguiente código imprime 4 en vez de 7?
#include <stdio.h>
#define N 4;
int main() {
int sum;
sum = N + 3;
printf("sum: %d\n", sum);
return 0;
}
@albert101

This comment has been minimized.

Copy link

commented Oct 5, 2013

Al definir que N es igual a cuatro ha puesto al final punto y coma, y cuando se define una macro no hay que ponerle punto y coma al final.

@phaya

This comment has been minimized.

Copy link
Owner Author

commented Oct 5, 2013

Cierto, pero ¿por qué? Por ejemplo, en este caso si invertimos el orden poniendo sum = 3 + N el programa funciona.

@ArturoBlazquez

This comment has been minimized.

Copy link

commented Oct 6, 2013

El problema es que la macro que has definido es "4;", por lo que sum = N + 3 equivale a escribir sum = 4; + 3;, y el programa interpreta que sum es igual que N, y luego un +3 que no influye en el resto del programa.

@phaya

This comment has been minimized.

Copy link
Owner Author

commented Oct 6, 2013

¡Perfecto! Las macros se sustituyen literalmente antes de que actúe el compilador. Los errores que puedan aparecer hacen referencia al código después de la sustitución, lo cual complica bastante encontrar el error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.