সি ++ নির্দিষ্টকরণের সংজ্ঞা দেয়:
- বুলিয়ান প্যারামিটারগুলির জন্য 'কম' অপারেটরের অস্তিত্ব এবং যদি তাই হয়,
- 4 টি প্যারামিটার ক্রমানুসারে ফলাফল?
অন্য কথায়, নিম্নলিখিত ক্রিয়াকলাপগুলির ফলাফলগুলি স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত করা হয়?
false < false
false < true
true < false
true < true
আমার সেটআপে (Centos 7, gcc 4.8.2), নীচের কোডটি আমি কী প্রত্যাশা করব তা ছড়িয়ে দিয়েছে (সি এর ইতিহাসকে 0 হিসাবে মিথ্যা এবং 1 হিসাবে সত্য হিসাবে উপস্থাপনের ইতিহাস দেওয়া হয়েছে):
false < false = false
false < true = true
true < false = false
true < true = false
যদিও আমি নিশ্চিত যে বেশিরভাগ (সমস্ত?) সংকলকরা একই আউটপুট দেবে, এটি কি সি ++ স্পেসিফিকেশন দ্বারা আইনী? বা একটি বিভ্রান্তিকর, তবে স্পেসিফিকেশন-কমপ্লায়েন্ট কম্পাইলারকে সত্যের মিথ্যা অপেক্ষা কম কি তা সিদ্ধান্ত নিতে অনুমোদিত?
#include <iostream>
const char * s(bool a)
{
return (a ? "true" : "false");
}
void test(bool a, bool b)
{
std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl;
}
int main(int argc, char* argv[])
{
test(false, false);
test(false, true);
test(true, false);
test(true, true);
return 0;
}
p <= q
অর্থ হ'ল p implies q
কখন p
এবং q
টাইপের বুল!
<=
অসাবধানতা বামপন্থী হিসাবে পড়া হতে পারে, এবং যে "কেবলমাত্র" যদি (যেমন, "[বস্তুগতভাবে]" বোঝায়) ডানদিকেটি কখনও কখনও টাইপসেট বা অনানুষ্ঠানিকভাবে একইভাবে লিখিত হয় =>
(যেমন, দ্বিগুণ শ্যাফ্টের অনুরূপ =
) । বামনামা এমনকি কখনও কখনও "যদি" হিসাবে পড়া হয় তবে আমি বিশ্বাস করি যে এটি "কেবলমাত্র যদি" এর জন্য রাইটারো ব্যবহারের চেয়ে অনেক কম সাধারণ।
std::min
উপরstd::vector<bool>
যেমন&&
।