c - सी में कॉमा ऑपरेटर




comma-operator (2)

क्या कोई समझा सकता है कि आउटपुट 2 कैसे है?

कथन में

a = (1, 2), 3;   

, एक अल्पविराम ऑपरेटर है । ऑपरेटर , ऑपरेटर, अभिव्यक्ति ऑपरेटर (1, 2) तुलना में उच्च ऑपरेटर पूर्वता के कारण = लिए बाध्य करेगा

(a = (1, 2)), 3;  

अल्पविराम ऑपरेटर के मामले में, एक अल्पविराम ऑपरेटर के बाएं संचालक का मूल्यांकन एक शून्य अभिव्यक्ति के लिए किया जाता है, फिर सही संकार्य का मूल्यांकन किया जाता है और परिणाम में सही संकार्य का मूल्य और प्रकार होता है

यहां दो अल्पविराम ऑपरेटर हैं। अभिव्यक्ति (1, 2) में पहले अल्पविराम ऑपरेटर के लिए, 1 को शून्य अभिव्यक्ति का मूल्यांकन किया जाएगा और फिर 2 का मूल्यांकन किया जाएगा और a को सौंपा जाएगा।
अब साइड इफ़ेक्ट हो गया है और इसलिए सेकंड कॉमा ऑपरेटर 3 के सही संचालन का मूल्यांकन किया जाएगा और अभिव्यक्ति का मूल्य (a = (1, 2)), 3 होगा।

इस सवाल का पहले से ही यहाँ एक जवाब है:

#include<stdio.h> 
int main(void) {
   int a=(1, 2), 3; 
   printf("%d", a);
   return 0;
}

आउटपुट: २
क्या कोई समझा सकता है कि आउटपुट 2 कैसे है?


क्या कोई समझा सकता है कि आउटपुट 2 कैसे है?

क्योंकि असाइनमेंट ऑपरेटर ( = ) की पूर्वता कॉमा ऑपरेटर ( , ) से अधिक है।

इसलिए, कथन:

a = (1, 2), 3;

के बराबर है:

(a = (1, 2)), 3;

और अभिव्यक्ति (1, 2) मूल्यांकन करता है।





comma-operator