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

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

এখানে আমরা দেখব C/C++-এ উন্যারি অপারেটর (Unary Operators) গুলো কী কী। উন্যারি অপারেটর হল সেই অপারেটর যা একটি একক অপারেন্ড (operand) ওপর কাজ করে একটি নতুন মান উৎপন্ন করতে। উন্যারি অপারেটরগুলো নিচে দেওয়া হলো:

অপারেটর বিবরণ
ইন্ডিরেকশন অপারেটর (*) এটি একটি পয়েন্টার ভেরিয়েবলের ওপর কাজ করে এবং পয়েন্টার অ্যাড্রেসের মান সমতুল্য একটি l-value রিটার্ন করে। এটাকে "ডিরেফারেন্সিং" (dereferencing) বলা হয়।
অ্যাড্রেস-অফ অপারেটর (&) ইউনারি অ্যাড্রেস-অফ অপারেটর (&) তার অপারেন্ডের অ্যাড্রেস নেয়। অ্যাড্রেস-অফ অপারেটরের অপারেন্ড হতে পারে একটি ফাংশন ডেজিগনেটর (function designator) বা একটি l-value যা একটি অবজেক্টকে ডেজিগনেট করে যা বিট ফিল্ড (bit field) নয় এবং register স্টোরেজ-ক্লাস স্পেসিফায়ারের সাথে ডিক্লেয়ার করা নয়।
ইউনারি প্লাস অপারেটর (+) ইউনারি প্লাস অপারেটর (+) এর ফলাফল হল এর অপারেন্ডের মান। ইউনারি প্লাস অপারেটরের অপারেন্ড=arithmetic টাইপের হতে হবে।
ইউনারি 네가শন অপারেটর (-) - (ইউনারি মাইনাস) অপারেটর অপারেন্ডের মানকে নেগেট করে। অপারেন্ড যেকোনো arithmetic টাইপের হতে পারে। ফলাফল একটি lvalue নয়।
লজিক্যাল 네가শন অপারেটর (!) লজিক্যাল 네가শন অপারেটর (!) তার অপারেন্ডের অর্থকে উল্টিয়ে দেয়। অপারেন্ড arithmetic বা পয়েন্টার টাইপের হতে হবে (অথবা এমন এক্সপ্রেশন যা arithmetic বা পয়েন্টার টাইপে ইভ্যালুয়েট হয়)। অপারেন্ড ইমপ্লিসিটলি bool টাইপে কনভার্ট হয়।
ওয়ানস কমপ্লিমেন্ট অপারেটর (~) ওয়ানস কমপ্লিমেন্ট অপারেটরকে কখনো "বিটওয়াইজ কমপ্লিমেন্ট" বা "বিটওয়াইজ NOT" অপারেটরও বলা হয়। এটি তার অপারেন্ডের বিটওয়াইজ ওয়ানস কমপ্লিমেন্ট উৎপন্ন করে। অপারেন্ড ইন্টিগ্রাল টাইপের হতে হবে।
প্রিফিক্স ইনক্রিমেন্ট অপারেটর (++) প্রিফিক্স ইনক্রিমেন্ট অপারেটর (++) তার অপারেন্ডে এক যোগ করে; এই ইনক্রিমেন্ট করা মান এক্সপ্রেশনের ফলাফল। অপারেন্ড অবশ্যই একটি l-value হতে হবে const টাইপের নয়। ফলাফল অপারেন্ডের মতো একই টাইপের একটি l-value।
প্রিফিক্স ডিক্রিমেন্ট অপারেটর (--) প্রিফিক্স ডিক্রিমেন্ট অপারেটর (--) তার অপারেন্ড থেকে এক বিয়োগ করে; এই ডিক্রিমেন্ট করা মান এক্সপ্রেশনের ফলাফল। অপারেন্ড অবশ্যই একটি l-value হতে হবে const টাইপের নয়। ফলাফল অপারেন্ডের মতো একই টাইপের একটি l-value।
কাস্ট অপারেটর () একটি টাইপ কাস্ট (type cast) একটি অবজেক্টের টাইপ এক্সপ্লিসিটলি (explicitly) কনভার্ট করার পদ্ধতি প্রদান করে একটি নির্দিষ্ট পরিস্থিতিতে। কম্পাইলার কাস্ট-এক্সপ্রেশনকে type-name টাইপ হিসেবে বিবেচনা করে টাইপকাস্ট হওয়ার পর।
sizeof অপারেটর এটি একটি কম্পাইল-টাইম ইউনারি অপারেটর যা তার অপারেন্ডের সাইজ কম্পিউট (compute) করার জন্য ব্যবহার করা যায়।
new অপারেটর এটি একটি মেমোরি অ্যালোকেশন অপারেটর যা ডাইনামিক্যালি মেমোরি অ্যালোকেট করতে ব্যবহৃত হয়। (C++-এ)
delete অপারেটর এটি একটি মেমোরি ডি-অ্যালোকেশন অপারেটর যা ডাইনামিক্যালি অ্যালোকেট করা মেমোরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। (C++-এ)

এই অপারেটরগুলোর রাইট-টু-লेफট (right-to-left) অ্যাসোসিয়েটিভিটি (associativity) থাকে। ইউনারি এক্সপ্রেশনস সাধারণত সিনট্যাক্সে পোস্টফিক্স বা প্রাইমারি এক্সপ্রেশনের আগে থাকে।

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

উদাহরণ (C++ প্রোগ্রাম)

#include <iostream>
using namespace std;

int main() {
    int x;
    float y = 1.23;
    x = (int) y; // কাস্ট অপারেটর
    x = -x;      // ইউনারি মাইনাস
    cout << x;
    return 0;
}

আউটপুট

-1

ব্যাখ্যা: y = 1.23 কে (int) কাস্ট করলে x = 1 হয়। তারপর -x করলে x = -1 হয়।

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

  2. C++-এ অ্যাসাইনমেন্ট অপারেটরসমূহ

  3. C++-এ লজিক্যাল অপারেটরসমূহ

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