दिलचस्प पोस्ट
सी ++ स्रोत में, एक्स "सी" का क्या प्रभाव है? उबंटू में स्रोत रिपॉजिटरी से जीआईटी उन्नयन कैसे डीबगिंग विकल्प -g बाइनरी निष्पादन योग्य बदलें? मुझे एक अनंत लूप क्यों मिलता है अगर मैं किसी संख्या के बजाय एक अक्षर दर्ज करता हूं? स्थिति तत्व खड़ी तय, पूर्ण क्षैतिज रूप से ब्रॉडकास्ट रिसीवर जब वाईफ़ाई या 3 जी नेटवर्क स्थिति बदल गई चेकबॉक्स के समूह के लिए HTML5 "आवश्यक" विशेषता का उपयोग करना? एक्सेल VBA यदि वर्कशीट ("wsName") मौजूद है उच्च स्तर पर, ओएथ 2 कैसे काम करता है? दो तिथियों के बीच एंड्रॉइड अंतर क्यों सी # में एक अपवाद पकड़ और rethrow? सबवर्सन हुक के सामान्य प्रकार ओएलएसन समय क्षेत्र से। समय समय क्षेत्र स्विफ्ट: मैं एसिंक्रोनस urlsession फ़ंक्शन के अंदर एक मान कैसे वापस कर सकता हूँ? कैसे multitouch निष्क्रिय करने के लिए?

जावा में एक्स + + और ++ एक्स के बीच क्या कोई अंतर है?

क्या जावा में ++ x और x ++ के बीच अंतर है?

वेब के समाधान से एकत्रित समाधान "जावा में एक्स + + और ++ एक्स के बीच क्या कोई अंतर है?"

++ x preincrement कहलाता है जबकि x ++ को पोस्टिंकरमेंट कहा जाता है

int x = 5, y = 5; System.out.println(++x); // outputs 6 System.out.println(x); // outputs 6 System.out.println(y++); // outputs 5 System.out.println(y); // outputs 6 

हाँ

++ x एक्स के मान को बढ़ता है और फिर एक्स देता है x
एक्स ++ एक्स के मान और फिर वेतन वृद्धि देता है

उदाहरण:

 x=0; a=++x; b=x++; 

कोड को चलाने के बाद ए और बी दोनों चलाए जाएंगे, लेकिन एक्स 2 हो जाएगा

ये पोस्टफ़िक्स और उपसर्ग ऑपरेटरों के रूप में जाना जाता है। दोनों 1 को वैरिएबल में जोड़ देंगे लेकिन कथन के परिणाम में एक अंतर है।

 int x = 0; int y = 0; y = ++x; // result: y=1, x=1 int x = 0; int y = 0; y = x++; // result: y=0, x=1 

हाँ,

 int x=5; System.out.println(++x); 

प्रिंट करेगा 6 और

 int x=5; System.out.println(x++); 

5 प्रिंट करेगा

मैं यहाँ अपने हाल के एक दंपत्ति से आया था , और हालांकि यह प्रश्न उत्तर देने से ज्यादा है, मैं कोड को डिकंपलिंग करने और "एक और जवाब" जोड़ने में मदद नहीं कर सकता 🙂

सटीक (और संभवत: एक बिट पैंडिनेट) होने के लिए,

 int y = 2; y = y++; 

में संकलित किया गया है:

 int y = 2; int tmp = y; y = y+1; y = tmp; 

यदि आप इस Y.java वर्ग को Y.java :

 public class Y { public static void main(String []args) { int y = 2; y = y++; } } 

और javap -c Y , आप निम्नलिखित jvm कोड प्राप्त करते हैं (मुझे जावा वर्चुअल मशीन विनिर्देश की मदद से मुख्य विधि पर टिप्पणी करने की अनुमति दी है):

 public class Y extends java.lang.Object{ public Y(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_2 // Push int constant `2` onto the operand stack. 1: istore_1 // Pop the value on top of the operand stack (`2`) and set the // value of the local variable at index `1` (`y`) to this value. 2: iload_1 // Push the value (`2`) of the local variable at index `1` (`y`) // onto the operand stack 3: iinc 1, 1 // Sign-extend the constant value `1` to an int, and increment // by this amount the local variable at index `1` (`y`) 6: istore_1 // Pop the value on top of the operand stack (`2`) and set the // value of the local variable at index `1` (`y`) to this value. 7: return } 

इस प्रकार, हम अंत में है:

 0,1: y=2 2: tmp=y 3: y=y+1 6: y=tmp 

कंप्यूटर वास्तव में क्या करता है पर विचार करते समय …

++ x: मेमोरी, वेतन वृद्धि, उपयोग, मेमोरी में वापस स्टोर करने से लोड एक्स

x ++: मेमोरी से लोड एक्स, मेमोरी पर वापस स्टोर, मेमोरी का उपयोग करें

विचार करें: a = 0 x = f (a ++) y = f (++ ए)

जहां समारोह एफ (पी) रिटर्न पी + 1

एक्स 1 (या 2) होगा

वाई 2 (या 1) होगा

और उसी में समस्या है। क्या कंपाइलर के लेखक ने पुनःप्राप्ति के बाद, उपयोग के बाद या संग्रहण के बाद पैरामीटर पास किया था।

आम तौर पर, बस एक्स = एक्स + 1 का उपयोग करें। यह आसान तरीका है।

हाँ।

 public class IncrementTest extends TestCase { public void testPreIncrement() throws Exception { int i = 0; int j = i++; assertEquals(0, j); assertEquals(1, i); } public void testPostIncrement() throws Exception { int i = 0; int j = ++i; assertEquals(1, j); assertEquals(1, i); } } 

हाँ, अभिव्यक्ति में ++ एक्स, एक्स + 1 का उपयोग किया जाएगा। X ++ का उपयोग करते हुए, अभिव्यक्ति में एक्स का उपयोग किया जाएगा और अभिव्यक्ति का मूल्यांकन किए जाने के बाद एक्स केवल बढ़ जाएगा।

इसलिए यदि एक्स = 9, ++ एक्स का उपयोग करते हुए, मान 10 का उपयोग किया जाएगा, अन्यथा, मान 9

यदि यह कई अन्य भाषाओं की तरह है तो आप एक साधारण प्रयास करना चाह सकते हैं:

 i = 0; if (0 == i++) // if true, increment happened after equality check if (2 == ++i) // if true, increment happened before equality check 

यदि उपरोक्त ऐसा नहीं होता है, तो वे समान हो सकते हैं

हां, दिया गया मूल्य क्रमशः वृद्धि के बाद और उसके बाद का मान है।

 class Foo { public static void main(String args[]) { int x = 1; int a = x++; System.out.println("a is now " + a); x = 1; a = ++x; System.out.println("a is now " + a); } } $ java Foo a is now 1 a is now 2 

ठीक है, मैं यहां उतरा क्योंकि मैं क्लासिक स्टैक कार्यान्वयन की जांच करते समय हाल ही में एक ही मुद्दे पर आया था। सिर्फ एक अनुस्मारक है कि इसका उपयोग स्टैक के सरणी आधारित कार्यान्वयन में किया जाता है, जो कि लिंक-सूची एक से थोड़ी तेज़ है।

नीचे दिए गए कोड, पुश और पॉप फ़ंक को देखें।

 public class FixedCapacityStackOfStrings { private String[] s; private int N=0; public FixedCapacityStackOfStrings(int capacity) { s = new String[capacity];} public boolean isEmpty() { return N == 0;} public void push(String item) { s[N++] = item; } public String pop() { String item = s[--N]; s[N] = null; return item; } } 

हां, एक्स ++ (पोस्टिंक्रिमेंट) के लिए एक अंतर है, एक्स का मान एक्सप्रेशन में इस्तेमाल किया जाएगा और अभिव्यक्ति के मूल्यांकन के बाद x 1 से बढ़ेगा, दूसरी तरफ + + x (प्रीनिर्कमेंट), एक्स + अभिव्यक्ति में 1 का उपयोग किया जाएगा एक उदाहरण लें:

 public static void main(String args[]) { int i , j , k = 0; j = k++; // Value of j is 0 i = ++j; // Value of i becomes 1 k = i++; // Value of k is 1 System.out.println(k); } 

सवाल पहले से ही उत्तर दिया गया है, लेकिन मुझे अपने पक्ष से जोड़ने की अनुमति भी है I

सबसे पहले ++ का मतलब एक से बढ़ता है और एक के द्वारा कमी का मतलब है।

अब x ++ का मतलब है कि इस पंक्ति के बाद एक्सरेंमेंट एक्स और ++ एक्स का अर्थ एक्सरेंज एक्स से पहले इस लाइन से है

इस उदाहरण की जाँच करें

 class Example { public static void main (String args[]) { int x=17,a,b; a=x++; b=++x; System.out.println(“x=” + x +“a=” +a); System.out.println(“x=” + x + “b=” +b); a = x--; b = --x; System.out.println(“x=” + x + “a=” +a); System.out.println(“x=” + x + “b=” +b); } } 

यह निम्नलिखित आउटपुट देगा:

 x=19 a=17 x=19 b=19 x=18 a=19 x=17 b=17 

जावा में एक्स ++ और ++ एक्स में अंतर है

++ x एक उपसर्ग फ़ॉर्म है: यह चर अभिव्यक्ति को बढ़ाता है तो अभिव्यक्ति में नए मान का उपयोग करता है।

उदाहरण के लिए यदि कोड में उपयोग किया जाता है:

 int x = 3; int y = ++x; //Using ++x in the above is a two step operation. //The first operation is to increment x, so x = 1 + 3 = 4 //The second operation is y = x so y = 4 System.out.println(y); //It will print out '4' System.out.println(x); //It will print out '4' 

एक्स ++ एक पोस्टफिक्स फॉर्म है: एक्सप्रेशन में वेरिएबल वैल्यू का उपयोग पहले किया गया है और फिर ऑपरेशन के बाद यह बढ़ता है।

उदाहरण के लिए यदि कोड में उपयोग किया जाता है:

 int x = 3; int y = x++; //Using x++ in the above is a two step operation. //The first operation is y = x so y = 3 //The second operation is to increment x, so x = 1 + 3 = 4 System.out.println(y); //It will print out '3' System.out.println(x); //It will print out '4' 

आशा है कि यह स्पष्ट है। रनिंग और उपरोक्त कोड के साथ खेलना आपकी समझ को समझना चाहिए।

आई ++ के साथ, इसे पोस्ट-कंट्रीमेंट कहा जाता है, और मूल्य उस प्रसंग में उपयोग किया जाता है, जो तब बढ़ता है; ++ मैं प्रीइन्क्रिटमेंट को पहले मान बढ़ाता है और फिर इसे संदर्भ में उपयोग करता है।

यदि आप इसे किसी भी संदर्भ में उपयोग नहीं कर रहे हैं, तो इससे कोई फर्क नहीं पड़ता कि आप क्या उपयोग करते हैं, लेकिन कन्वेंशन का उपयोग कन्वेंशन द्वारा किया जाता है

एक बहुत बड़ा अंतर है।

जैसा कि अधिकांश उत्तर पहले से ही सिद्धांत को इंगित कर चुके हैं, मैं एक आसान उदाहरण बताता हूं:

 int x = 1; //would print 1 as first statement will x = x and then x will increase int x = x++; System.out.println(x); 

अब देखते हैं ++x :

 int x = 1; //would print 2 as first statement will increment x and then x will be stored int x = ++x; System.out.println(x);