यहां क्या हो रहा है?सी ++ में सशर्त ऑपरेटर के अंदर अल्पविराम ऑपरेटर की प्राथमिकता क्या है?
#include <iostream>
using namespace std;
int main(){
int x=0,y=0;
true? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl; //why does y=0 here?
x=0,y=0;
false ? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl;
}
x: 1
y: 0
x: -1
y: -1
दूसरा मामला ठीक लगता है। मैं उम्मीद करता हूं कि एक्स और वाई दोनों पहले मामले में 1 तक बढ़ेगा, लेकिन केवल बाएं हाथ के संचालन में वृद्धि होगी।
(false ? (++x, ++y) : (--x)), --y;
इस प्रकार --y
हमेशा निष्पादित होने
(true ? (++x, ++y) : (--x)), --y;
दूसरा एक के बराबर है:
कोड है कि वास्तव में संकलित प्रदान करें -। अन्यथा मैं मदद करने के लिए आप –
'++ y' होता है परेशान नहीं किया जा सकता है, लेकिन फिर' --y' करता है। 'सच? ++ x, ++ y: --x, --y' को '(true? ++ x, ++ y: --x) के रूप में पार्स किया गया है, --y' – oldrinb
@AdrianCornish यह कोड संकलित करता है; क्या तुमने कोशिश की? – chrisaycock