Tipos de datos primitivos no inicializados en C/C++

¿Qué cree que sucede cuando utiliza un tipo de datos primitivo no inicializado?  
Bueno, puede suponer que el compilador debe asignar su variable de tipo primitivo con valores significativos como 0 para int, 0.0 para float. ¿Qué pasa con el tipo de datos char?
Encontremos la respuesta ejecutando el código en el IDE.
 

CPP

#include <iostream>
 
using namespace std;
 
int main()
{
    // The following primitive data type variables will not
    // be initialized with any default values
    char ch;
    float f;
    int i;
    double d;
    long l;
 
    cout << ch << endl;
    cout << f << endl;
    cout << i << endl;
    cout << d << endl;
    cout << l << endl;
 
    return 0;
}

C

#include <stdio.h>
 
int main(void)
{
    // The following primitive data type variables will not
    // be initialized with any default values
    char ch;
    float f;
    int i;
    double d;
    long l;
 
    printf("%c\n", ch);
    printf("%f\n", f);
    printf("%d\n", i);
    printf("%lf\n", d);
    printf("%ld\n", l);
   
    return (0);
}
 
// This code is contributed by sarajadhav12052009

Salida en IDE de GFG: 
 

5.88052e-39
0
6.9529e-310
0

Salida en Codechef IDE: 
 

0
0
0
0

Salida en mi máquina: 
 

1.4013e-045
0
2.96439e-323
0

¿Por qué el compilador C/C++ no inicializa las variables con valores predeterminados?  
“Una de las cosas que ha hecho que C++ sea viable es la regla de gastos generales cero: lo que no usas, no lo pagas”. -Stroustrup. 
La sobrecarga de inicializar una variable de pila es costosa, ya que dificulta la velocidad de ejecución, por lo tanto, estas variables pueden contener valores indeterminados o valores basura, ya que se proporciona espacio de memoria cuando definimos un tipo de datos. Se considera una mejor práctica inicializar una variable de tipo de datos primitivos antes de usarla en el código.
 

Publicación traducida automáticamente

Artículo escrito por darksideofthemoon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *