2016-08-15 12 views
5

comp.lang.c FAQ, सी मानक राज्यों में उल्लेख किया है:वृद्धि ऑपरेटरों और "अपरिभाषित व्यवहार"

पिछले और अगले अनुक्रम बिंदु के बीच एक वस्तु अपने संग्रहीत के मूल्यांकन से अधिकतम एक बार संशोधित मूल्य होगा एक अभिव्यक्ति। इसके अलावा, पूर्व मान को संग्रहीत करने के लिए केवल मान निर्धारित करने के लिए उपयोग किया जाएगा।

लेकिन, यह (now deleted) article कहता है कि a = ++b + ++c; अपरिभाषित है। क्या कोई यह बता सकता है कि यह अपरिभाषित व्यवहार क्यों है?

+10

मुझे लगता है कि इस उदाहरण में श्री गांसस्ले गलत है। –

+3

इसे यूबी बनाने का एक तरीका: '#define b a' – MikeCAT

+1

यह आलेख में एक त्रुटि की तरह दिखता है। – user2357112

उत्तर

11

अभिव्यक्ति a = ++b + ++c; अलग हैं में वस्तुओं शामिल (a, b और c) परंतु, कि अभिव्यक्ति अच्छी तरह से परिभाषित है।

शायद, लेखक को उसी चर का उपयोग करने के लिए a = ++b + ++b; का उपयोग करना था। मैं केवल अनुमान लगा सकता हूं। लेकिन दी गई अभिव्यक्ति में कोई अनिश्चितता नहीं है।

+1

'int b = INT_MAX, c = INT_MAX; int एक = ++ बी +++ सी; '? – alk

+1

@alk जो इसे खींच रहा होगा, है ना? – Quentin

+0

@alk - गांसस्ले स्पष्ट रूप से (गलत तरीके से) मानता है कि विशेष रूप से '++' ऑपरेटर के उपयोग की वजह से अभिव्यक्ति अपरिभाषित है। –

संबंधित मुद्दे