কম্পিউটার টিউটোরিয়াল

C এবং C++-এ একই কোড কিন্তু আলাদা আউটপুট (Code valid in both but different output)

এখানে আমরা কিছু প্রোগ্রাম দেখব যা 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 মিলিত, কিন্তু টাইপ সিস্টেম, ক্যারেক্টার লিটারেল, স্ট্রাকচার ট্যাগ, বুল সাইজ ইত্যাদি বিষয়ে পার্থক্য রয়েছে। একই কোড দুটি ভাষায় কম্পাইল হলে ভিন্ন আউটপুট দিতে পারে।

  1. C++ STL-এ list::empty() এবং list::size()

  2. C++-এ struct এবং typedef struct-এর পার্থক্য

  3. C++-এ 'struct' এবং 'typedef struct'-এর পার্থক্য

  4. কি C++ ভেরিয়েবল একসাথে const এবং volatile হতে পারে?