C/Visual C - Ayuda con volatile, plz

 
Vista:

Ayuda con volatile, plz

Publicado por Gonzalo (1 intervención) el 26/01/2006 20:31:23
Tengo la sig. función:

void youwin_1(int x, char *s)
{
volatile char a;
char buf[20];
a=x;
strcpy(buf,s);
a-=x;
if(a==4) printf("You win!\n");
}

Mi tarea es obligar a esta funcion a retornar "You Win", el problema es que no se en que aspectos cambia la palabra clave "volatile" al char a, por lo tanto no se como puedo llevar a esta funcion a hacer lo que yo quiero.

Espero que me puedan ayudar y que mi explicacion haya sido lo suficientemente clara

Desde ya muchisimas gracias

Gonzalo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Ayuda con volatile, plz

Publicado por chuidiang (73 intervenciones) el 26/01/2006 21:21:41
Hola:

volatile suele usarse cuando el valor de la variable puede cambiar por causas externas al programa. Suele hacerse así cuando la variable tiene su contenido en una zona de memoria que alguna tarjeta de hardware puede hacer cambiar el contenido. Esto hace que el compilador lo tenga en cuenta y consulte el valor de la variable cada vez que el código lo diga.

Por ejemplo, si haces un codigo como este

int a = 4;
int b = 8 - a;
printf ("%d\n", b);

El compilador es listo y el código ejecutable directamente escribe en pantalla un 4 y no reserva ni la variable a, ni la b, ni echa la cuenta.

Si pones

volatile int a = 4;
int b=8-a;
printf ("%d\n", b);

El compilador ahora tiene en cuenta que desde a=4 hasta b=8-a, alguien puede haber cambiado el valor de la variable, así que se preocupa de hacer código ejecutable que mire el valor de dicha variable y no presupone que va a seguir valiendo cuatro.

En tu código, si nadie externo al programa cambia el valor de dicha variable, da exactamente igual poner volatile o no ponerlo, salvo quizás que con volatile el código generado sea menos eficiente.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar