এখানে আমরা একটি পাজল দেখব। ধরা যাক নিচের প্রোগ্রামটি দেওয়া আছে, আমাদের আউটপুট এবং কারণ বলতে হবে।
উদাহরণ
#include<iostream> using namespace std; int main() { int x = 0xab; ~x; cout << hex << x; }আউটপুট কী হবে? ~x কমপ্লিমেন্ট অপারেশন করছে। তাহলে কি হেক্স ফর্মে কমপ্লিমেন্টেড রেজাল্ট দেখাবে?
আউটপুট আসলে নিচের মতো
আউটপুট
ab
যা কোনো পরিবর্তন নেই। কিন্তু কেন? কারণ ~x, x কে কমপ্লিমেন্টেড ফর্মে রূপান্তর করছে, কিন্তু মানটি কোনো ভেরিয়েবলে অ্যাসাইন করা হয়নি। এক্সপ্রেশনটি R-Value এক্সপ্রেশন। L-Value ব্যবহার না করা পর্যন্ত এটি কোনো ভেরিয়েবলে সংরক্ষিত হবে না। যদি L-Value ব্যবহার করি তবে −
উদাহরণ
#include<iostream> using namespace std; int main() { int x = 0xab; x = ~x; cout << hex << x; }আউটপুট
ffffff54