Open In App

Uninitialized primitive data types in C/C++

Last Updated : 11 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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.
 

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


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 :