আপনি কি আমাকে এই জাভা কোডটির আউটপুট ব্যাখ্যা করতে পারেন?
int a=5,i;
i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;
System.out.println(a);
System.out.println(i);
উভয় ক্ষেত্রেই আউটপুট 20 হয়
আপনি কি আমাকে এই জাভা কোডটির আউটপুট ব্যাখ্যা করতে পারেন?
int a=5,i;
i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;
System.out.println(a);
System.out.println(i);
উভয় ক্ষেত্রেই আউটপুট 20 হয়
উত্তর:
এটা কি সাহায্য করে?
a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)
মূল বিষয়টি হ'ল ++a
মানটি বৃদ্ধি করে এবং তাৎক্ষণিকভাবে এটি প্রদান করে।
a++
মানটিকেও (পটভূমিতে) বাড়িয়ে দেয় তবে ভেরিয়েবলের অপরিবর্তিত মানটি দেয় - যা দেখতে পরে কার্যকর করা হয় তা দেখে looks
int a = 1; int b = a++; int c = ++b;
এটি পোস্ট ইনক্রিমেন্টের কারণে খ 1 হবে বলে আশা করছিল।
++a
ইনক্রিমেন্ট এবং তারপরে ভেরিয়েবল ব্যবহার করে।
a++
ব্যবহার করে এবং তারপরে পরিবর্তনশীল বৃদ্ধি করে।
যদি তোমার থাকে
a = 1;
এবং তুমি কর
System.out.println(a++); //You will see 1
//Now a is 2
System.out.println(++a); //You will see 3
কোডাডিক্টিক্ট আপনার নির্দিষ্ট স্নিপেটটি ব্যাখ্যা করে।
উভয় ক্ষেত্রে এটি প্রথমে মান গণনা করে, তবে উত্তরোত্তর ক্ষেত্রে এটি পুরানো মান ধারণ করে এবং গণনার পরে এটি প্রদান করে
++ এ
a ++
i = ++a + ++a + a++;
হয়
i = 6 + 7 + 7
কাজ করা : ইনক্রিমেন্ট এ 6 (বর্তমান মান 6) + ইনক্রিমেন্ট এ 7 (বর্তমান মান 7)। যোগফল 13 এখন এটি একটি (= 7) এর বর্তমান মানের সাথে যুক্ত করুন এবং তারপরে 8 এ বৃদ্ধি করুন যোগফল 20 এবং অ্যাসাইনমেন্টটি সম্পূর্ণ হওয়ার পরে এর মান 8 হয়।
i = a++ + ++a + ++a;
হয়
i = 5 + 7 + 8
কাজ করা : ক এর শুরুতে মূল্য হ'ল 5 এটি যুক্ত করুন এবং তারপরে এটি 6 বৃদ্ধি করুন (বর্তমান মান 6)। + এর অন্যান্য অপরেন্ড পেতে বর্তমান মান 6 থেকে 7 বৃদ্ধি করুন a যোগফলটি 12 এবং এর বর্তমান মান 7 হয়। পরবর্তী বৃদ্ধি একটি 7 থেকে 8 (বর্তমান মান = 8) এবং 20 পাওয়ার জন্য এটি পূর্ববর্তী যোগ 12 এ যুক্ত করুন।
++a
a
মূল্যায়ন করার আগে বর্ধিতকরণ ।
a++
মূল্যায়ন a
এবং তারপরে এটি বৃদ্ধি করে।
আপনার দেওয়া মত প্রকাশের সাথে সম্পর্কিত:
i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end
আমি উপরে ব্যবহৃত প্যারেন্টিগুলি জাভা দ্বারা স্পষ্টভাবে ব্যবহার করা হয়েছে। আপনি যদি এইভাবে শর্তাদি দেখেন তবে আপনি সহজেই দেখতে পাচ্ছেন যে, এগুলি উভয়ই একই রকম যেমন তারা চলাফেরা করে।
++ এ হ'ল উপসর্গ ইনক্রিমেন্ট অপারেটর:
a ++ হল পোস্টফিক্স ইনক্রিমেন্ট অপারেটর:
একবার আপনি নিয়মগুলি মনে রাখবেন, ইয়া জন্য সব কিছু গণনা করার জন্য!
অনুমান করা হচ্ছে যে আপনি বোঝাতে চেয়েছিলেন
int a=5; int i;
i=++a + ++a + a++;
System.out.println(i);
a=5;
i=a++ + ++a + ++a;
System.out.println(i);
a=5;
a=++a + ++a + a++;
System.out.println(a);
এটি মূল্যায়ন করে:
i = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
সুতরাং আমি 6 + 7 + 7 = 20 এবং তাই 20 মুদ্রিত হয়।
i = (5, a is now 6) + (7, a is now 7) + (8, a is now 8)
সুতরাং আমি 5 + 7 + 8 = 20 এবং তাই 20 আবার মুদ্রিত হয়।
a = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
এবং ডান হাতের সমস্তটি মূল্যায়নের পরে (একটিতে 8 সেট করা সহ) এর পরে 6 + 7 + 7 = 20 এ সেট করা হয় এবং তাই 20 টি একটি চূড়ান্ত সময় মুদ্রিত হয়।
যখন a
5 হয়, তখন a++
এক্সপ্রেশনকে একটি 5 দেয় এবং a
তারপরে বৃদ্ধি হয়, যখন সংখ্যাটি এক্সপ্রেশন করার আগে ++a
ইনক্রিমেন্ট a
(যা দেয়a
এই ক্ষেত্রে এক্সপ্রেশনটিকে 6 )।
সুতরাং আপনি গণনা
i = 6 + 7 + 7
i = 5 + 7 + 8
আমি বিশ্বাস করি তবে আপনি যদি আপনার সমস্ত বিবৃতি একত্রিত করেন এবং এটি জাভা 8.1 এ চালান তবে আপনি একটি পৃথক উত্তর পাবেন, কমপক্ষে আমার অভিজ্ঞতা যা বলেছিল তাই।
কোডটি এইভাবে কাজ করবে:
int a=5,i;
i=++a + ++a + a++; /*a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8); i=20;*/
i=a++ + ++a + ++a; /*a = 5;
i=a++ + ++a + ++a; =>
i=8 + 10 + 11; (a=11); i=29;*/
a=++a + ++a + a++; /*a=5;
a=++a + ++a + a++; =>
a=12 + 13 + 13; a=38;*/
System.out.println(a); //output: 38
System.out.println(i); //output: 29
a=5; i=++a + ++a + a++;
হয়
i = 7 + 6 + 7
কাজ করা: প্রাক / পোস্ট ইনক্রিমেন্টের "ডান থেকে বাম" সমিতি রয়েছে, এবং পোস্টের চেয়ে পূর্বের অগ্রাধিকার রয়েছে, সুতরাং সমস্ত প্রাক বর্ধনের প্রথমটি হিসাবে সমাধান করা হবে (++a + ++a) => 7 + 6
। তারপরে a=7
পোস্ট ইনক্রিমেন্ট => 7 + 6 + 7 =20
এবং সরবরাহ করা হয় a =8
।
a=5; i=a++ + ++a + ++a;
হয়
i=7 + 7 + 6
ওয়ার্কিং: প্রাক / পোস্ট বৃদ্ধি হয়েছে Associativity, এবং প্রাক "বাম থেকে ডানে" পোস্ট বেশি প্রাধান্য আছে, তাই সব প্রাক বৃদ্ধি প্রথম যেমন সমাধান হবে (++a + ++a) => 7 + 6
.then a=7
পোস্ট ইনক্রিমেন্ট প্রদান করা => হয় 7 + 7 + 6 =20
এবং a =8
।
আমি বিশ্বাস করি আপনি এই সমস্ত বিবৃতি এক সাথে
কার্যকরভাবে চালাচ্ছেন ফলাফল => 38, 29 এর ফলাফল হবে
int a=5,i;
i=++a + ++a + a++;
//this means i= 6+7+7=20 and when this result is stored in i,
//then last *a* will be incremented <br>
i=a++ + ++a + ++a;
//this means i= 5+7+8=20 (this could be complicated,
//but its working like this),<br>
a=++a + ++a + a++;
//as a is 6+7+7=20 (this is incremented like this)