2012-12-18 11 views
7

मैं लुआ के साथ थोड़ा सा खेल रहा हूं।लुआ में वृद्धि

मैं निम्नलिखित कोड का टुकड़ा एक अप्रत्याशित व्यवहार है कि भर में आया था:

a = 3; 
b = 5; 
c = a-- * b++; // some computation 
print(a, b, c); 

लुआ किसी भी त्रुटि के बिना कार्यक्रम चलाता है लेकिन 2 6 15 प्रिंट नहीं करता अपेक्षा के अनुरूप। क्यूं कर ?

+2

आप इसे कैसे चला सकता हूँ? मुझे लूआ 5.1.4 का उपयोग करके अपेक्षित के रूप में '3 5 3' (जैसा कि एक टिप्पणी शुरू होता है) मिलता है। –

उत्तर

18

-- starts a single line comment, जैसे # या // अन्य भाषाओं में। यह

दे देंगे क्योंकि 3 लाइन ग के रूप में मूल्यांकन किया जाएगा

a = 3; 
b = 5; 
c = a 
6

LUA ++ और -- के साथ वृद्धि और कमी नहीं करता है। -- इसके बजाय एक टिप्पणी शुरू करेंगे।

+0

सच है, लेकिन यह स्पष्ट नहीं करता है कि प्रोग्राम संकलित क्यों करता है और चलता है। – prapin

+0

यह संकलित करता है और चलता है क्योंकि LUA लाइनों के अंत में अर्धविरामों को याद नहीं करता है। यह सिर्फ 3 5 3. – annih

+2

@annih प्रिंट करेगा यह समझ में आता है कि यह कोड क्यों संकलित करता है, जैसा कि इस उत्तर पर कहा गया है - एक टिप्पणी शुरू करता है, इसलिए आपका कोड अनिवार्य है: 'a = 3; बी = 5; सी = ए; 'ध्यान दें कि; मेरे सिर के शीर्ष पर जरूरी है यदि आप इसे एक पंक्ति में करते हैं, जैसे मैं करता हूं – engineercoding

1

= एक

क्यों:

तो यह करने के लिए बराबर है? क्योंकि लुआ में, टिप्पणियां शुरू होती हैं -। इसलिए सी = ए-- * बी ++; // कुछ गणना

का मूल्यांकन दो भागों के रूप में किया जाता है;

  1. अभिव्यक्ति: ग एक
  2. टिप्पणी =: * ख ++; //// कुछ गणना
2

आप आउटपुट के रूप में 2 6 15 चाहते हैं, इस कोड का प्रयास करें:

a = 3 
b = 5 
c = a * b 
a = a - 1 
b = b + 1 
print(a, b, c)