সবচেয়ে ঘন ঘন প্রশ্নগুলির মধ্যে একটি হল C বা C++-এ কিছু অপ্রচলিত আদিম ডেটা মানগুলির মান কী হবে? আচ্ছা উত্তর বিভিন্ন সিস্টেমে ভিন্ন হবে। আমরা ধরে নিতে পারি কম্পাইলার ভেরিয়েবলে 0 বরাদ্দ করবে। এটি 0 হিসাবে পূর্ণসংখ্যার জন্য করা যেতে পারে, ফ্লোট 0.0 এর জন্য, কিন্তু অক্ষর প্রকারের ডেটার জন্য কী হবে?
উদাহরণ
#include <iostream>
using namespace std;
main() {
char a;
float b;
int c;
double d;
long e;
cout << a << "\n";
cout << b << "\n";
cout << c << "\n";
cout << d << "\n";
cout << e << "\n";
} আউটপুট (উইন্ডোজ কম্পাইলারে)
1.4013e-045 0 2.91499e-322 0
আউটপুট (লিনাক্স কম্পাইলারে)
0 0 0 0
তাহলে, এখন প্রশ্ন আসে, কেন C বা C++ ভেরিয়েবলের জন্য কিছু ডিফল্ট মান নির্ধারণ করছে না? উত্তর হল, স্ট্যাক ভেরিয়েবল শুরু করার ওভারহেড ব্যয়বহুল। এটি কার্যকর করার গতিকেও ব্যাহত করে। তাই এই ভেরিয়েবলে কিছু মধ্যবর্তী মান থাকতে পারে। তাই এটি ব্যবহার করার আগে আমাদের আদিম ডেটাটাইপ মানগুলি শুরু করতে হবে৷