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

C++-এ ইউনারি অপারেটর (Unary Operators)


ইউনারি অপারেটর হলো সেসব অপারেটর যা একটি একক অপারেন্ডের ওপর কাজ করে একটি নতুন মান তৈরি করতে। ইউনারি অপারেটরগুলো নিচের মতো:

অপারেটরবিবরণ
ইন্ডিরেকশন অপারেটর (*)এটি একটি পয়েন্টার ভেরিয়েবলের ওপর কাজ করে এবং পয়েন্টার অ্যাড্রেসের মানের সমতুল্য একটি l-value ফেরত দেয়। এটিকে "পয়েন্টার ডিরেফারেন্সিং" বলা হয়।
অ্যাড্রেস-অফ অপারেটর (&)ইউনারি অ্যাড্রেস-অফ অপারেটর (&) তার অপারেন্ডের অ্যাড্রেস নেয়। অ্যাড্রেস-অফ অপারেটরের অপারেন্ড হতে পারে একটি ফাংশন ডিজিগনেটর অথবা একটি l-value যা একটি অবজেক্টকে ডেজিগনেট করে যা বিট ফিল্ড নয় এবং register স্টোরেজ-ক্লাস স্পেসিফায়ার দিয়ে ডিক্লেয়ার করা নয়।
ইউনারি প্লাস অপারেটর (+)ইউনারি প্লাস অপারেটর (+) এর ফলাফল হলো তার অপারেন্ডের মান। ইউনারি প্লাস অপারেটরের অপারেন্ড অবশ্যই আর্থমেটিক টাইপের হতে হবে।
ইউনারি নিগেশন অপারেটর (-)- (ইউনারি মাইনাস) অপারেটর অপারেন্ডের মান নিগেট করে। অপারেন্ড যেকোনো আর্থমেটিক টাইপের হতে পারে। ফলাফল একটি lvalue নয়।
লজিক্যাল নিগেশন অপারেটর (!)লজিক্যাল নিগেশন অপারেটর (!) তার অপারেন্ডের অর্থ উল্টায় দেয়। অপারেন্ড অবশ্যই আর্থমেটিক বা পয়েন্টার টাইপের হতে হবে (অথবা এমন এক্সপ্রেশন যা আর্থমেটিক বা পয়েন্টার টাইপে ইভ্যালুয়েট হয়)। অপারেন্ডকে ইম্পলসিটলি bool টাইপে কনভার্ট করা হয়।
ওয়ানস কমপ্লিমেন্ট অপারেটর (~)ওয়ানস কমপ্লিমেন্ট অপারেটর কখনো "বিটওয়াইজ কমপ্লিমেন্ট" বা "বিটওয়াইজ NOT" অপারেটর বলা হয়, তার অপারেন্ডের বিটওয়াইজ ওয়ানস কমপ্লিমেন্ট তৈরি করে। অপারেন্ড অবশ্যই ইন্টিগ্রাল টাইপের হতে হবে।
প্রিফিক্স ইনক্রিমেন্ট অপারেটর (++)প্রিফিক্স ইনক্রিমেন্ট অপারেটর (++) তার অপারেন্ডে ১ যোগ করে; এই ইনক্রিমেন্টেড মান হলো এক্সপ্রেশনের ফলাফল। অপারেন্ড অবশ্যই const টাইপের নয় এমন একটি l-value হতে হবে। ফলাফল অপারেন্ডের মতো একই টাইপের একটি l-value।
প্রিফিক্স ডিক্রিমেন্ট অপারেটর (--)প্রিফিক্স ডিক্রিমেন্ট অপারেটর (--) তার অপারেন্ড থেকে ১ বিয়োগ করে; এই ডিক্রিমেন্টেড মান হলো এক্সপ্রেশনের ফলাফল। অপারেন্ড অবশ্যই const টাইপের নয় এমন একটি l-value হতে হবে। ফলাফল অপারেন্ডের মতো একই টাইপের একটি l-value।
কাস্ট অপারেটর ()একটি টাইপ কাস্ট একটি অবজেক্টের টাইপ এক্সপ্লিসিটলি কনভার্ট করার পদ্ধতি প্রদান করে একটি নির্দিষ্ট পরিস্থিতিতে। কম্পাইলার কাস্ট-এক্সপ্রেশনকে টাইপ type-name হিসেবে বিবেচনা করে টাইপ কাস্ট হওয়ার পর।
sizeof অপারেটরএটি একটি কম্পাইল-টাইম ইউনারি অপারেটর যা তার অপারেন্ডের সাইজ গণনা করতে ব্যবহার করা হয়।
new অপারেটরএটি একটি মেমরি এলোকেশন অপারেটর যা ডাইনামিক্যালি মেমরি এলোকেট করতে ব্যবহৃত হয়।
delete অপারেটরএটি একটি মেমরি ডি-এলোকেশন অপারেটর যা ডাইনামিক্যালি এলোকেট করা মেমরি ডি-এলোকেট করতে ব্যবহৃত হয়।

এই অপারেটরগুলোর রাইট-টু-লেফট অ্যাসোসিয়েটিভিটি রয়েছে। ইউনারি এক্সপ্রেশন সাধারণত সিনট্যাক্স জড়িত যা একটি পোস্টফিক্স বা প্রাইমারি এক্সপ্রেশনের আগে থাকে।

উদাহরণ

আসুন -(মাইনাস) এবং কাস্টিং() ইউনারি অপারেটরের একটি উদাহরণ দেখি।

#include <iostream>
using namespace std;
int main() {
    int x;
    float y = 1.23;
    x = (int) y;
    x = -x;
    cout << x;
    return 0;
}

আউটপুট

এটি নিচের আউটপুট দেবে:

-1
  1. C++-এ ?-->? অপারেটর কী?

  2. C++-এ অ্যারো অপারেটর (->) কী?

  3. C++-এ ইউনারি অপারেটর (Unary Operators)

  4. C++-এ এরিথমেটিক অপারেটর