C/Visual C - programa en duda

 
Vista:

programa en duda

Publicado por jolu (1 intervención) el 22/07/2005 01:51:34
Disculpen alguien me podría explicar porque al correr a=36 y *b=35?

#include"iostream.h"
main(){
//definición de las variables
int a,*b;
//localización de la memoria necesaria (sólo para el apuntador)
b=new int(0);
//asignación de las variables
a=5;
*b=123;
//uso de las variables.Se procesa algo de información
a++;
*b=a*a;
a=(*b)--;
//comparación
if(a==36)
cout<<"el valor de a es correcto: "<<a<<endl;
if (*b!=a)
cout<<"el programa original está bien"<<endl;
cout<<"los valores son: "<<a<<" y "<<*b<<endl;
//liberación de memoria usada(sólo para el apuntador)
delete b;
}
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

RE:programa en duda

Publicado por fernando.gomez (1603 intervenciones) el 22/07/2005 22:41:21
Según yo, el problema está en la siguiente línea:

a=(*b)--;

Antes de esta línea, b vale 36. Le asignas el valor 36 a la variable a y DESPUÉS disminuye b en uno, porque estás empleando el operador de postdecremento. Si quieres que ambos tengan 35, tendrías que hacer algo como:

a = --(*b);

donde primero disminuyes b de 36 a 35 y luego toma el valor para asignárselo a "a".

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