এখানে আমরা কিছু প্রোগ্রাম দেখব যা C এবং C++ কম্পাইলারলে কম্পাইল করলে ভিন্ন রেজাল্ট দেবে। এই ধরনের প্রোগ্রাম অনেক আছে, কিন্তু এখানে আমরা কিছুটা আলোচনা করব।
- C এবং C++-এ ক্যারেক্টার লিটারেল (character literals) ভিন্নভাবে ট্রিট (treated) হয়। C-তে এগুলো
intহিসেবে ট্রিট হয় কিন্তু C++-তেcharহিসেবে। তাই যদিsizeof()অপারেটর দিয়ে সাইজ চেক করি, তবে C-তে ৪ রিটার্ন করবে, আর C++-তে ১।
উদাহরণ (C প্রোগ্রাম)
#include <stdio.h>
int main() {
printf("The character: %c, size(%zu)", 'a', sizeof('a'));
}
আউটপুট (C)
The character: a, size(4)
উদাহরণ (C++ প্রোগ্রাম)
#include <iostream>
int main() {
std::cout << "The character: " << 'a' << ", size(" << sizeof('a') << ")";
}
আউটপুট (C++)
The character: a, size(1)
- C-তে
structব্যবহার করলে, এটি ব্যবহার করার সময়structট্যাগ (tag) ব্যবহার করতে হয় যতক্ষণ নাtypedefব্যবহার করা হয়। কিন্তু C++-তে স্ট্রাকচার ব্যবহার করার জন্যstructট্যাগ লাগে না।
উদাহরণ (C প্রোগ্রাম)
#include <stdio.h>
struct MyStruct {
int x;
char y;
};
int main() {
struct MyStruct st; // struct tag present
st.x = 10;
st.y = 'd';
printf("Struct (%d|%c)", st.x, st.y);
}
আউটপুট (C)
Struct (10|d)
উদাহরণ (C++ প্রোগ্রাম)
#include <iostream>
struct MyStruct {
int x;
char y;
};
int main() {
MyStruct st; // struct tag not present
st.x = 10;
st.y = 'd';
std::cout << "Struct (" << st.x << "|" << st.y << ")";
}
আউটপুট (C++)
Struct (10|d)
- C এবং C++-এ বুলিয়ান (Boolean) টাইপ ডেটার সাইজ ভিন্ন।
উদাহরণ (C প্রোগ্রাম)
#include <stdio.h>
int main() {
printf("Bool size: %zu", sizeof(1 == 1));
}
আউটপুট (C)
Bool size: 4
উদাহরণ (C++ প্রোগ্রাম)
#include <iostream>
int main() {
std::cout << "Bool size: " << sizeof(1 == 1);
}
আউটপুট (C++)
Bool size: 1
সারসংক্ষেপ: C এবং C++ যদিও সিনট্যাক্সiquement মিলিত, কিন্তু টাইপ সিস্টেম, ক্যারেক্টার লিটারেল, স্ট্রাকচার ট্যাগ, বুল সাইজ ইত্যাদি বিষয়ে পার্থক্য রয়েছে। একই কোড দুটি ভাষায় কম্পাইল হলে ভিন্ন আউটপুট দিতে পারে।