क्या यह एक वैध अभिव्यक्ति है? यदि हां, तो क्या आप इसे फिर से लिख सकते हैं ताकि यह अधिक समझ में आता है? उदाहरण के लिए, क्या यह (4 > y && y > 1)
जैसा ही है? आप जंजीर लॉजिकल ऑपरेटरों का मूल्यांकन कैसे करते हैं?क्या है (4> वाई> 1) सी ++ में एक वैध कथन? यदि आप ऐसा करते हैं तो आप इसका मूल्यांकन कैसे करते हैं?
उत्तर
बयान (4 > y > 1)
इस रूप में पार्स किया जाता है:
((4 > y) > 1)
तुलना ऑपरेटरों <
और >
evaluate left-to-right।
4 > y
या तो 0
या 1
देता है यदि यह सत्य है या नहीं।
फिर परिणाम 0
या 1
के बाद से करने के लिए 1.
इस मामले में, तुलना की जाती है पूरे बयान हमेशा गलत वापस आ जाएगी 1
से अधिक कभी नहीं है।
एक अपवाद है, हालांकि नहीं है:
तो y
एक वर्ग है और >
ऑपरेटर कुछ असामान्य करने के लिए अतिभारित किया गया है। फिर कुछ भी चला जाता है।
उदाहरण के लिए, इस संकलन विफल हो जाएगा:
class mytype{
};
mytype operator>(int x,const mytype &y){
return mytype();
}
int main(){
mytype y;
cout << (4 > y > 1) << endl;
return 0;
}
तकनीकी रूप से, '4> y' या तो 'झूठी' या 'सत्य' देता है, जो अगली तुलना के लिए '0' या' 1' में परिवर्तित हो जाते हैं। – fredoverflow
4> y सत्य या गलत के बुलियन मूल्य का मूल्यांकन करेगा। अभिव्यक्ति का शेष तब अनिवार्य रूप से [सत्य | झूठा]> 1 है, जो समझ में नहीं आता है।
यह "समझ में आता है" जब आपको एहसास होता है कि 'सत्य' और 'झूठा' सी/सी ++ में पूर्णांक मान हैं। –
टेड: नहीं वे नहीं हैं। हालांकि, उन्हें और से परिवर्तित किया जा सकता है। – GManNickG
@Gman: एक तकनीकीता, लेकिन एक प्रासंगिक एक। अर्थशास्त्र क्रूर हो सकता है। –
मुझे लगता है कि यह एक वैध अभिव्यक्ति (नहीं एक बयान) है, लेकिन शायद आप क्या चाहते हैं नहीं करता है। यह (4 > y) > 1
के रूप में बाएं से दाएं का मूल्यांकन करता है। परीक्षण 4 > y
या तो 0 (झूठी) या 1 (सत्य) का मूल्यांकन करेगा, और पूरी अभिव्यक्ति हमेशा 0 (झूठी) का मूल्यांकन करेगी।
अभिव्यक्ति वैधता
हाँ, यह एक वैध अभिव्यक्ति, यह मानते हुए y है, या परोक्ष में, एक पूर्णांक परिवर्तित किया जा सकता है। यदि यह नहीं है और >
ऑपरेटर ओवरलोड हो गया है, तो यह इस प्रश्न के दायरे से बाहर एक अलग कहानी है।
इसका मूल्यांकन ((4 > y) > 1)
के रूप में बाएं से दाएं किया जाएगा।
मान लीजिए y
एक पूर्णांक है, आइए दो संभावनाओं पर विचार करें। 4 > y
true
या false
वापस कर सकते हैं। अगला भाग प्रभावी रूप से true > 1
या false > 1
बन जाता है। ए) 4 > y
रिटर्न true
:
को देखते हुए निहित bool to int conversion, वहाँ दो संभावनाएं हैं। true
1
का मूल्यांकन करता है। 1 > 1
झूठे का मूल्यांकन करता है। बी) 4 > y
false
देता है। false
0
का मूल्यांकन करता है। 0 > 1
झूठे का मूल्यांकन करता है।
कोई फर्क नहीं पड़ता कि अभिव्यक्ति झूठी मूल्यांकन करेगी।
फिर से लिखा व्याख्या
मुझे लगता है कि तुम क्या करना चाहते हैं ((4 > y) && (y > 1))
है।
उदाहरण
(4 > y > 1)
(4 > y && y > 1)
के रूप में ही नहीं है।
तार्किक ऑपरेटर्स
तार्किक ऑपरेटरों (!
, &&
, ||
) शॉर्ट-सर्किट तर्क का उपयोग करें।
a && b
, a
का मूल्यांकन किया जाएगा। यदि a
सत्य का मूल्यांकन करता है, तो b
का मूल्यांकन किया जाएगा। अन्य, b
का मूल्यांकन नहीं किया जाएगा। a || b
के लिए, शॉर्ट-सर्किटिंग तर्क रिवर्स में काम करता है। a
का मूल्यांकन किया जाएगा। चूंकि अभिव्यक्ति a
का मूल्यांकन पहले किया जाता है, यदि यह गलत है, तो कोई संभावना नहीं है कि संपूर्ण अभिव्यक्ति सत्य का मूल्यांकन करेगी।
a || b
, a
दिया गया मूल्यांकन किया जाएगा। यदि a
गलत पर मूल्यांकन करता है, तो b
का मूल्यांकन किया जाएगा। अन्य, b
का मूल्यांकन नहीं किया जाएगा। चूंकि अभिव्यक्ति a
का मूल्यांकन पहले किया जाता है, यदि यह सत्य है, तो कोई संभावना नहीं है कि संपूर्ण अभिव्यक्ति झूठी मूल्यांकन करेगी।
ऑपरेटरों को चेन करना operator precedence का मामला है। ब्रांड्स का उपयोग करने के लिए बेहतर है और गलत व्यवहार को जोखिम देने के बजाय स्पष्ट होना चाहिए।
4> वाई> 1 -> वाई हो सकता है अगर वाई - कक्षा है !!
#include <iostream>
#include <string>
struct num{ int n; };
struct op{ bool v; struct num n; };
struct op operator > (int x, num n){
struct op o = { x > n.n, n };
return o;
}
bool operator > (struct op o, int x)
{
return o.v && o.n.n > x;
}
int main()
{
struct num y = { 2 } ;
if ( 4 > y > 1) { std::cout << "4 > y > 1 TRUE" << std::endl; }
else { std::cout << "4 > y > 1 ALWAYS FALSE" << std::endl; }
}
की
- 1. यदि आप जावा में क्लोन नहीं करते हैं तो आप क्या करते हैं और आप इसे क्या कहते हैं?
- 2. यदि आप यूएमएल में डिज़ाइन नहीं करते हैं, तो आप किसमें डिज़ाइन करते हैं?
- 3. जब आप लाइब्रेरी का उपयोग करते हैं तो अब आप क्या करते हैं?
- 4. क्या आप क्यूटी का उपयोग करते हैं और आप इसका उपयोग क्यों करते हैं?
- 5. क्या आप पाइथन में "वैश्विक" कथन का उपयोग करते हैं?
- 6. आप एक वैध साबुन कैसे निर्धारित करते हैं?
- 7. यदि आप Erlang लाइब्रेरी को इंस्टॉल करना चाहते हैं तो आप क्या उपयोग करते हैं?
- 8. जब आप अनुवादित पाठ में लिंक करते हैं तो आप गेटटेक्स्ट का उपयोग कैसे करते हैं?
- 9. क्या आप ToList() करते हैं?
- 10. आप कैसे प्रतिक्रिया करते हैं?
- 11. आप सॉफ्टवेयर में विश्वसनीयता का मूल्यांकन कैसे करते हैं?
- 12. यदि आप एक खाली जावा फ़ाइल संकलित करते हैं तो क्या होता है?
- 13. आप प्रोटोटाइप कैसे करते हैं?
- 14. आप एक्सकोड में टीडीडी कैसे करते हैं?
- 15. आप PowerShell का उपयोग कैसे करते हैं?
- 16. जावा में, यदि आप किसी ऑपरेशन में Double.NaN का उपयोग करते हैं तो क्या होता है?
- 17. क्या आप फ़िंग का उपयोग करते हैं?
- 18. यदि आप Handlebars.js में कस्टम सहायक का प्रीकंपलिंग कर रहे हैं तो आप एक कस्टम सहायक कैसे पंजीकृत करते हैं?
- 19. क्या आप विम में सी ++ कोड डीबग करते हैं? कैसे?
- 20. क्या आप दावे का उपयोग करते हैं?
- 21. क्या आप एनडपेन्स का उपयोग करते हैं?
- 22. रूबी में आप पॉलिमॉर्फिज्म कैसे करते हैं?
- 23. jquery पता आप इसका उपयोग कैसे करते हैं?
- 24. किसी डिज़ाइन का मूल्यांकन करते समय, आप जटिलता का मूल्यांकन कैसे करते हैं?
- 25. क्या आप बिज़टॉक का उपयोग कर रहे हैं? यदि हां, तो आप इसका उपयोग कैसे कर रहे हैं?
- 26. आप आईएमई का उपयोग कैसे करते हैं?
- 27. क्या आप पहले विकास समाधान तैयार/स्केच/ड्रा करते हैं और फिर इसे विकसित करते हैं? यदि हां, तो कैसे?
- 28. क्या आप SELinux को अक्षम करते हैं?
- 29. यदि आप अकेले काम करते हैं तो क्या आपको एक परियोजना प्रबंधन प्रणाली की आवश्यकता है?
- 30. आप wx.Panel को रीफ्रेश कैसे करते हैं?
संभावित डुप्लिकेट [श्रृंखलित तुलना ऑपरेटरों के लिए भाषा समर्थन (एक्स