c# - अभिव्यक्ति का मूल्यांकन करते समय मुझे गलत परिणाम क्यों मिलता है?




(4)

आप जिस समस्या का सामना कर रहे हैं, वह ऑपरेटर पूर्वता के कारण है। % पहले से अधिक है, इसलिए आप वास्तव में अपनी अभिव्यक्ति के साथ क्या कर रहे हैं:

  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

BOD MAS नियम के अनुसार।


इसे इस्तेमाल करे। यह सिर्फ बुनियादी गणितीय समूहीकरण मुद्दा है।

गुणा और भाग का मूल्यांकन अंतिम रूप से + या - के बाद किया जाएगा

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

जवाब 11 होना चाहिए क्योंकि:

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

यदि आप चाहते हैं कि यह 1 हो तो आपको उचित कोष्ठक का उपयोग करना चाहिए, तभी यह गणना को प्राथमिकता देगा:

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



c#  

c#