c# - কোনও অভিব্যক্তি মূল্যায়ন করার সময় আমি কেন ভুল ফলাফল পাব?




(4)

অপারেটর অগ্রাধিকারের কারণে আপনি যে সমস্যার মুখোমুখি হচ্ছেন is % এর আগে + চেয়ে বেশি প্রাধান্য রয়েছে, সুতরাং আপনার অভিব্যক্তিটি নিয়ে আপনি আসলে যা করছেন:

  1. a.Max() পান
  2. a.Sum() % 10 পান
  3. এগুলি একসাথে যুক্ত করুন

সুতরাং ফলাফলটি 10 ​​+ 1, যা 11।

আপনি যদি কেবলমাত্র a.Sum() পরিবর্তে সংযোজনটির বাকী অংশ নিতে চান তবে আপনার প্রথম বন্ধনী ব্যবহার করা দরকার: (a.Max() + a.Sum()) % 10 । এটি মূল্যায়নে পরিবর্তন করে:

  1. a.Max() পান
  2. a.Sum() পান
  3. এগুলি একসাথে যুক্ত করুন
  4. 10 দ্বারা বিভাগের পরে বাকী অংশটি নিন

তার ফলাফল 1।

int[] a = {5, 6, 10}
int n = a.Max() + a.Sum() % 10;
Console.Write(n);

কোডটি 11 প্রিন্ট করে, তবে আমি 1 টি প্রত্যাশা করব কারণ 31% 10 = 1। উপরের কোডটি কেন অন্যরকম উত্তর দেয় তা কি কেউ ব্যাখ্যা করতে পারেন?


আপনার এখানে BOD MAS বিধি ব্যবহার করা উচিত। সর্বোচ্চ মান = 10, সমস্ত সংখ্যার যোগফল = 21 এবং তারপরে মোড গণনা করুন। সুতরাং সমাধানটি হবে:

10 + 21 % 10
10 + 1 = 11

বিওডি এমএএস বিধি অনুসারে।


এটা চেষ্টা কর. এটি কেবল মৌলিক গাণিতিক গ্রুপিং ইস্যু।

গুণ বা বিভাগটি + বা - পরে সর্বশেষ মূল্যায়ন করা হবে

int[] a = {5, 6, 10};
int n = (a.Max() + a.Sum()) % 10;
Console.Write(n);




c#  

c#