Valores predeterminados de int cuando no se inicializan en c. ¿Por qué obtengo diferentes salidas?

Estaba intentando comprobar el valor predeterminado de int y char cuando no se inicializó en c. mi problema es que obtengo dos salidas diferentes cuando uso clrscr () para borrar la pantalla entre 2 ejecuciones. ¿Podría alguien explicarme este comportamiento? aquí está el código

void main() { int i; char c; printf("%d %c",i,c); } 

salida: 0

 void main() { int i; char c; clrscr(); printf("%d %c",i,c); } 

salida: -29542 // algún valor de basura que es lo que esperaba en ambos casos

No deberías estar esperando nada en particular. Los valores no están inicializados, es decir, pueden ser cualquier cosa .

¿Por qué el valor de la basura en el primer caso difiere del valor de la basura en el segundo caso? ¿Quién sabe? Diferentes mapas de memoria, diferentes rutas de ejecución – diferentes basura.

Creo que siempre da un valor de basura … no se puede determinar el comportamiento …: – /

En el caso de su código, obtendrá valores de basura, pero si el varibale entero se declaró globalmente, entonces su valor predeterminado será 0 seguro en C. Mencioné esto porque el título de la pregunta era “Valores predeterminados de int cuando no se inicializa en c “.

En realidad, los ceros también eran basura. Después de agregar clrscr(); Cambiaste la stack así que lo hiciste a la basura.

En el código administrado, hay valores predeterminados, generalmente 0 o equivalentes.

En el mundo no administrado, no hay un valor predeterminado. Cuando se asigna la memoria, el sistema simplemente le dice “Puede escribir aquí si quiere, pero no sé qué desorden dejó atrás el progtwig anterior”.

Este comportamiento se considera malo para algunas personas, ya que su progtwig puede ser impredecible por algunas razones oscuras, pero también es una forma de poder optimizar tanto como nosotros podemos administrar la memoria, piense en una gran asignación de búfer que, cuando se asigne, se llenaría con 0s, y luego se llena con datos reales. ¡Obtienes el doble de rendimiento en código no administrado!