करना संभव डुप्लिकेट का मूल्यांकन करता है:
in what versions of c is a block inside parenthesis used to return a value valid?यह वैध सी क्यों है? ; --- ({123}) 123
निम्नलिखित एक ठेठ मैक्स मैक्रो का एक प्रकार के लिए सुरक्षित संस्करण (इस जीसीसी पर काम करता है 4.4.5):
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
यहाँ, हम देखते हैं कि इस अभिव्यक्ति, अधिकतम (ए, बी) अभिव्यक्ति की परिणाम देता है
_a > _b ? _a : _b;
भले ही यह अभिव्यक्ति एक ब्लॉक में है। तो, मैं जांच की और पाया कि यह वैध C:
int a = ({123;}); // a is 123
कोई व्याख्या कर सकते हैं क्यों यह वैध व्याकरण और क्या ({बयान}) है की सही व्यवहार है? साथ ही, आप देखेंगे कि {123;} मान्य अभिव्यक्ति नहीं है, लेकिन केवल ({123;}) है।
डुप्स: [अक्टूबर 200 9] (http://stackoverflow.com/questions/1635549/in-what-versions-of-c-is-a-block-inside -पेरथेसिस-प्रयुक्त-टू-रिटर्न-ए-वैल्यू-मान्य) [मई 2010] (http://stackoverflow.com/questions/2892981/weird-initialization-in-c) [जनवरी 2010] (http: // stackoverflow .com/प्रश्न/2075 9 30/अधिक जानकारी-ऑन-इन-सी) –