Open In App

Uninitialized primitive data types in C/C++

What do you think happens when you use an uninitialized primitive data type? 
Well you may assume that the compiler should assign your primitive type variable with meaningful values like 0 for int, 0.0 for float. What about char data type?
Let’s find the answer to that by running the code in the IDE.
 




#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;
}




#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

Output in GFGs IDE: 
 



5.88052e-39
0
6.9529e-310
0

Output in Codechef IDE: 
 

0
0
0
0

Output on my machine: 
 



1.4013e-045
0
2.96439e-323
0

Why C/C++ compiler does not initialize variables with default values? 
“One of the things that has kept C++ viable is the zero-overhead rule: What you don’t use, you don’t pay for.” -Stroustrup. 
The overhead of initializing a stack variable is costly as it hampers the speed of execution, therefore these variables can contain indeterminate values or garbage values as memory space is provided when we define a data type. It is considered a best practice to initialize a primitive data type variable before using it in code.
 


Article Tags :