Programación General > Visual C++

 Problemas Al Convertir Tipos

<< < (3/5) > >>

Eternal Idol:

--- Cita de: "JuanK" ---pero el codigo que genera?
--- Fin de la cita ---
Una salida por consola que dice 99  :lol:  :D  :lol:

Por cierto esto: printf("%s\r\n", edad); es un ejemplo de lo mismo y me imagino que lo habra probado el mundo entero. ¿Donde esta el "%s\r\n"? ¿En la luna? No, esta en alguna seccion del ejecutable con permisos de lectura  B)

Genera una asignacion de la direccion de una cadena que se encuentra en memoria (en una seccion del ejecutable) a una variable local (en la pila).

Para que te des una idea es el equivalente a tener esto en assembly:


--- Código: Text --- .data  sta db &#34;%s&#34;, 13, 10, 0  stb db &#34;Soy una cadena&#34;, 0.code  push ebp  mov ebp,esp  push ecx  mov dword ptr [ebp-4], offset stb  mov eax, dword ptr [ebp-4]  push eax  push offset sta  call _printf  add esp, 8  mov esp, ebp  pop  ebp  ret  

JuanK:
he actualizado mi post anterior porque estaba incompleto.

Eternal Idol:

--- Cita de: "JuanK" --- he actualizado mi post anterior porque estaba incompleto.
--- Fin de la cita ---
No cambia nada ... ¿Esto te parece que no funciona en algun compilador?


--- Código: Text --- int edad = 110;printf(&#34;%s&#092;r&#092;n&#34;, edad);  
Funciona perfectamente ya que esa cadena estara reservada en algun lado, donde fuera. Hasta en un ejecutable de tipo COM se podria poner dentro de la misma seccion de codigo y funcionaria.

JuanK:
claro, pero digo el ejemplo de arriba.

Eternal Idol:

--- Cita de: "JuanK" --- claro, pero digo el ejemplo de arriba.
--- Fin de la cita ---
No hay diferencia, lee las respuestas y trata de entender como funciona un ejecutable, asi te vas a dar cuenta de que no hay ninguna diferencia entre pasarle una cadena como parametro a una funcion y asignarle la direccion de comienzo de esa cadena a un puntero.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa