আমি "সেট" / "ক্লিয়ার" পছন্দ করি তবে আপনার ফ্রেসিংয়ে অস্পষ্টতার বিষয়ে সতর্ক থাকুন। ফিলিপ হিসাবে উল্লেখ করেছে যে , "বুল ভেরিয়েবল সেট করুন" বলতে ভেরিয়েবলের কিছু মূল্য লেখার অর্থ নেওয়া যেতে পারে। তবে "পতাকা নির্ধারণ" আরও স্পষ্ট।
সম্পর্কিত পরিভাষা: 0/1 মানগুলিতে 0 / অ-শূন্য পূর্ণসংখ্যার বাঁককে "বুলেটিনাইজিং" বলা হয় ।
আপনি যদি 0/1 মানটি একটি পূর্ণসংখ্যা হিসাবে ব্যবহার করেন (সত্য / মিথ্যা হিসাবে পরিবর্তে bool
) তবে আপনি এই শব্দটি ব্যবহার করতে চাইতে পারেন। অন্যথায় এটি কেবল তখনই আসে যখন আপনি সংকলকটি যে অপারেশনগুলি করতে হয় তার ব্যয় সম্পর্কে কথা বলছেন। (অথবা আপনি যদি প্রতিটি ভেক্টরের উপাদানগুলিতে অল-শূন্য / সমস্ত বিট উত্পাদন করার জন্য একটি সিমডের সাথে ম্যানুয়ালি ভেক্টর করছেন)।
সি এবং সি ++ এ, একটি bool
সুস্পষ্টভাবে 0 বা 1 হিসাবে পূর্ণসংখ্যায় রূপান্তর করতে পারে এবং সাধারণ বাস্তবায়নে bool
0 বা 1 (কেবল কোনও শূন্য নয়) নয় এমন এক-বাইট মান হিসাবে সংরক্ষণ করা হয়। দক্ষগুলি সক্ষম করে a && b
তবে অনুশীলনে অনেকগুলি সি সংকলক অপ্টিমাইজেশন মিস করেছেন ।
bool booleanize(int a) { return a; } // C++
এই ফাংশনটি ret
বেশিরভাগ আর্কিটেকচারে একাধিক নির্দেশাবলীর (এর সাথে নয় ) সংকলন করে । (এমআইপিএস একটি আকর্ষণীয় ব্যতিক্রম, পৃথক পতাকা / শর্ত-কোড নিবন্ধের পরিবর্তে তুলনামূলকভাবে-নিবন্ধের নির্দেশাবলী থাকা)। গডবোল্ট সংকলক এক্সপ্লোরার এক্স x86-64, এমআইপিএস এবং এআরএম থাম্বের জন্য , আমরা দেখতে পাচ্ছি x86-64 সংস্করণটি হ'ল:
test edi, edi # set flags according to a & a
setne al
ret # return value in AL, the low byte of RAX
দুঃখের এই উদাহরণটি কি কিছুটা বড় / অফ-টপিকটি বড় হয়েছে!