c++ - How to avoid integer overflow? -


निम्न C ++ कोड में, 32767 + 1 = -32768।

  #include & lt ; iostream & gt; Int main () {short var = 32767; वर ++; Std :: cout & lt; & lt; वर; std :: cin.get (); }  

क्या कोई भी गलती के बिना "var" को 32767 छोड़ने का कोई तरीका है?

हां, वहां है:

  यदि (var & lt; 32767) var ++;  

वैसे, आपको लगातार कोडक को कूटकोड नहीं करना चाहिए, numeric_limits & lt; short & gt; :: max () में परिभाषित & lt; limits & gt; <

आप एक फ़ंक्शन टेम्पलेट में इस कार्यक्षमता को आवृत कर सकते हैं:

  टेम्पलेट & lt; class T & gt; शून्य increment_without_wraparound (T & amp; मान) {यदि (मान & lt; numeric_limits & lt; T & gt; :: max ()) मूल्य ++; }  

और इसे इस तरह प्रयोग करें:

  छोटा var = 32767; increment_without_wraparound (वर); // एक छोटा नाम चुनें!  

Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -