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