We will understand how C and C++ behave differently in case we re-declare a global variable without initializing, redeclaring global variables with initialization, redeclaring global variables and initializing them twice. Also, we will repeat above combinations with local variables.
#include <stdio.h> int var; int var; int main(){ printf("Var = %d",var); return 0; }
Var = 0
#include <iostream> using namespace std; int var; int var; int main(){ cout<<"Var = "<<var; return 0; }
Compilation Error: int var; main.cpp:3:5: note: ‘int var’ previously declared here
Results:- C allows redeclaration of global variables without initialization. Value remains 0. C++ gives a Compilation error that the variable is redeclared.
#include <stdio.h> #include <stdio.h> int main(){ int var; int var; printf("Var = %d",var); return 0; }
error: redeclaration of ‘var’ with no linkage
#include <iostream> using namespace std; int main(){ int var; int var; cout<<"Var = "<<var; return 0; }
error: redeclaration of ‘int var’
Results:- Both C and C++ do not allow redeclaration of local variables with no initialization done. Both programs failed in compilation.
#include <stdio.h> int main(){ int var; int var=10; printf("Var = %d",var); return 0; }
Var = 10
#include <iostream> using namespace std; int var; int var=10; int main(){ cout<<"Var = "<<var; return 0; }
main.cpp:7:9: error: redeclaration of ‘int var’ int var;
Results:-C allows redeclaration of Global variable if it is uninitialized. C++ program fails during compilation.
#include <stdio.h> int var; int var=10; int main(){ printf("Var = %d",var); return 0; }
error: redeclaration of ‘var’ with no linkage
#include <iostream> using namespace std; int main(){ int var; int var=10; cout<<"Var = "<<var; return 0; }
error: redeclaration of ‘int var
Results:-Both C and C++ do not allow redeclaration of local variables even if it is uninitialized. Both programs failed in compilation