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
Post a Comment