:भ्रामक उपयोग एक मैं C++ कोड के इस टुकड़े है 'अगर' बयान
ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);
लेकिन यह सी # में कैसे दिखते हैं?
:भ्रामक उपयोग एक मैं C++ कोड के इस टुकड़े है 'अगर' बयान
ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);
लेकिन यह सी # में कैसे दिखते हैं?
यह इस का अर्थ है:
if (y[0]>y[1])
{
inhi = 1;
ihi = 0;
} else {
inhi = 0;
ihi = 1;
}
या किसी अन्य तरीके से लिखा (C++):
inhi = (y[0]>y[1]);
ini = !inhi;
याह, मैं मूल रूप से बूल थे, तो मैं आपके दूसरे संस्करण के समान सोच रहा था। – RAL
अल्पविराम ऑपरेटर काम की तुलना में कम बांधता है, इसलिए अभिव्यक्ति
inhi=1,0
सेट inhi
1
, और फिर 0
देता है। इसी तरह
inhi=0,1
सेट 0
करने के लिए inhi
और 1
देता है। यह पूरी बात
if(y[0] > y[1]) {
inhi = 1;
ihi = 0;
} else {
inhi = 0;
ihi = 1;
}
के बराबर है, यदि आप कर सकते हैं, तो मैं इसे इस तरह लिखने का सुझाव दूंगा। inhi
और ihi
का एक ही उद्देश्य (इस कथन में), और संयोजन टर्नरी ऑपरेटर (?:
) और अल्पविराम ऑपरेटर है जो आपको उन्हें अलग-अलग वजन देता है।
यह स्पष्ट है, स्पष्टीकरण जेसी के लिए धन्यवाद, कारण मैं अनुवाद के बाद था (सी ++ से सी # तक) जैसा कि आपने कहा था (? :) और कॉमा का उपयोग सी # में संकलित नहीं हुआ था। – Victor
comma operator बारी में तर्क का मूल्यांकन करता है और उसके बाद पिछले का मूल्यांकन अभिव्यक्ति देता है। अर्थात। यदि आप निम्न कोड
int four = 2 + 2, mul(2,2), 4;
एक सख्ती से-निम्न-विनिर्देश गैर के अनुकूलन संकलक पहले 2 और 2 जोड़ देगी और उसके बाद परिणाम को निरस्त किया था, तो समारोह mul
फोन और वापसी मान त्यागने और अंत में मूल्यांकन 4 जो तब i
चर को सौंपा गया है।
ध्यान दें कि प्रत्येक कॉमा के बाद sequence point है, इसलिए पिछले मूल्यांकन के सभी दुष्प्रभावों का प्रदर्शन किया जाएगा। जैसे
ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);
में inhi
लिए काम किया है और इससे पहले किihi
अद्यतन किया जाता है समाप्त हो गया है। और इसका यह भी अर्थ है कि एक कंपाइलर ऊपर दिए गए उदाहरण में mul
पर कॉल को ऑप्टिमाइज़ नहीं कर सकता है, जब तक कि यह सुनिश्चित न हो कि mul
फ़ंक्शन के मूल्य को वापस करने के अलावा कोई दुष्प्रभाव नहीं है। आमतौर पर ऐसा कुछ नहीं है जो संकलक जानता है, हालांकि सी ++ में फ़ंक्शंस को const
के रूप में चिह्नित करना संभव है जिसके द्वारा संकलक को बताया जाता है।
-1, पहली पंक्ति संकलित नहीं होगी और 'const' पिछले पैराग्राफ में वर्णित तरीके से काम नहीं करती है। – avakar
ihi और inhi किस प्रकार हैं? – RAL
मुझे क्षमा करें हाँ cs = C# और ihi और inhi दोनों इंटरगर प्रकार – Victor
@Byers IMHO http://en.wikipedia.org/wiki/C_Sharp_(programming_language) –