আমরা বুঝব কীভাবে C এবং C++ আলাদা আচরণ করে যখন আমরা কোনো গ্লোবাল ভেরিয়েবল ইনিশিয়ালাইজেশন ছাড়াই রি-ডিক্লেয়ার করি, গ্লোবাল ভেরিয়েবল ইনিশিয়ালাইজ করে রি-ডিক্লেয়ার করি, বা গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ার করে দুবার ইনিশিয়ালাইজ করি। এছাড়া লোকাল ভেরিয়েবলের জন্যও একই কম্বিনেশনগুলো রিপিট করব।
১. ক) C প্রোগ্রাম: ইনিশিয়ালাইজেশন ছাড়া গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <stdio.h> int var; int var; int main(){ printf("Var = %d",var); return 0; }
আউটপুট
Var = 0
খ) C++ প্রোগ্রাম: ইনিশিয়ালাইজেশন ছাড়া গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <iostream> using namespace std; int var; int var; int main(){ cout<<"Var = "<<var; return 0; }
আউটপুট
কম্পাইলেশন এরর: int var; main.cpp:3:5: note: 'int var' previously declared here
ফলাফল:- C ইনিশিয়ালাইজেশন ছাড়া গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশনের অনুমতি দেয়। মান 0 থাকে। C++ কম্পাইলেশন এরর দেয় যে ভেরিয়েবলটি রি-ডিক্লেয়ার করা হয়েছে।
২. ক) C প্রোগ্রাম: ইনিশিয়ালাইজেশন ছাড়া লোকাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#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
খ) C++ প্রোগ্রাম: ইনিশিয়ালাইজেশন ছাড়া লোকাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <iostream> using namespace std; int main(){ int var; int var; cout<<"Var = "<<var; return 0; }
আউটপুট
error: redeclaration of 'int var'
ফলাফল:- C এবং C++ উভয়ই ইনিশিয়ালাইজেশন ছাড়া লোকাল ভেরিয়েবল রি-ডিক্লেয়ারেশনের অনুমতি দেয় না। দুটি প্রোগ্রামই কম্পিলেশনএ ফেলে।
৩. ক) C প্রোগ্রাম: ইনিশিয়ালাইজেশন সহ গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <stdio.h> int main(){ int var; int var=10; printf("Var = %d",var); return 0; }
আউটপুট
Var = 10
খ) C++ প্রোগ্রাম: ইনিশিয়ালাইজেশন সহ গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#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;
ফলাফল:- C আনইনিশিয়ালাইজড গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশনের অনুমতি দেয়। C++ প্রোগ্রাম কম্পিলেশনয় ফেলে।
৪. ক) C প্রোগ্রাম: ইনিশিয়ালাইজেশন সহ গ্লোবাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <stdio.h> int var; int var=10; int main(){ printf("Var = %d",var); return 0; }
আউটপুট
error: redeclaration of 'var' with no linkage
খ) C++ প্রোগ্রাম: ইনিশিয়ালাইজেশন সহ লোকাল ভেরিয়েবল রি-ডিক্লেয়ারেশন
#include <iostream> using namespace std; int main(){ int var; int var=10; cout<<"Var = "<<var; return 0; }
আউটপুট
error: redeclaration of 'int var
ফলাফল:- C এবং C++ উভয়ই ইনিশিয়ালাইজড লোকাল ভেরিয়েবল রি-ডিক্লেয়ারেশনের অনুমতি দেয় না। দুটি প্রোগ্রামই কম্পিলেশনএ ফেলে।