क्या C ++ विनिर्देश परिभाषित करता है:
- बूलियन मापदंडों के लिए 'कम से कम' ऑपरेटर का अस्तित्व, और यदि हां, तो
- 4 पैरामीटर क्रमपरिवर्तन का परिणाम है?
दूसरे शब्दों में, विनिर्देश द्वारा परिभाषित निम्नलिखित कार्यों के परिणाम हैं?
false < false
false < true
true < false
true < true
मेरे सेटअप पर (Centos 7, gcc 4.8.2), नीचे दिए गए कोड से मुझे पता चलता है कि मुझे क्या उम्मीद है (0 के रूप में झूठी का प्रतिनिधित्व करने का C का इतिहास) और 1 के रूप में सच है:
false < false = false
false < true = true
true < false = false
true < true = false
Whilst मैं बहुत यकीन है कि सबसे (सभी?) संकलक एक ही उत्पादन दे देंगे, इस C ++ विनिर्देशन द्वारा विधायी है? या एक अड़ियल है, लेकिन विनिर्देश-अनुरूप संकलक को यह तय करने की अनुमति है कि सच झूठ से कम है?
#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>
के रूप में&&
।