: Gramma from conditional-expression
conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression
और
1 == 1 ? {1,2} : {3,4};
^ ^ are not expressions
यही वजह है कि संकलक त्रुटि देता है:
error: expected expression before ‘{’ token // means after ?
error: expected expression before ‘:’ token // before :
संपादित @Rudi रसेल के रूप में टिप्पणी की:
int main(){
{}
;
{1,2;}
}
हम {}
का उपयोग सी
में
बयान ;
गठबंधन करने के लिए:
निम्नलिखित ग में एक मान्य कोड है नोट: यदि मैं {1,2}
लिखता हूं तो यह एस त्रुटि (*expected ‘;’ before ‘}’ token*)
, क्योंकि 1,2
एक अभिव्यक्ति है लेकिन एक बयान नहीं है।
ओपी के लिए: क्या The Expression Statement in C है और क्या Block Statement और Expression Statements
EDIT2 है:
नोट: कैसे @ouah typecase का उपयोग करता है यह अभिव्यक्ति में परिवर्तित करने, हाँ:
इस कोड को चलाने को समझने के लिए:
int main(){
printf("\n Frist = %d, Second = %d\n",((int[2]){1,2})[0],((int[2]) {1,2})[1]);
}
ऐसा लगता है कि काम करता है:
~$ ./a.out
Frist = 1, Second = 2
क्या आपने यह कोशिश की है: int क्यों [2] = (1 == 1)? {1,2}: {3,4}; – luckystars
हां: इससे कोई फर्क नहीं पड़ता –
यह सरणी प्रारंभिकरण के वाक्यविन्यास में मौजूद नहीं है। – BLUEPIXY