We give code examples to 3 common software bugs and programming errors:
-Array Buffer Overflow
-Integer Overflow
-Floating Point Round-off Error
#include<iostream> using namespace std; int main(){ cout << " Example of Array Buffer Overflow" << endl; int a[10] ={1,2,3,4,5,6,7,8,9,10}; int b[10] ={11,12,13,14,15,16,17,18,19,20}; for (int i =0; i <= 25; i++){ cout << i << ": " << a[i] << " " << b[i] << endl;} int i = 12; b[i]= 9999; cout << "a[0] = "<< a[0] << endl; cout << " Example of Integer Overflow" << endl; int num = 1; unsigned int unum = 1; for ( int i=1 ; i <= 33 ; i++){ num = num *2; unum = unum << 1; cout << i << ": "<< num <<" " << unum <<endl; } cout << endl << " Example of Roundoff" << endl; float f1 = 1000.43; float f2 = 1000.0; if ((f1-f2) != 0.43) { cout << "roundoff error" << endl; cout << ".43 != " << f1 - f2 << '\n'; } } /* Explanation: 1000.43 is actually represented as the following bitpattern -the “s” shows the position of the sign bit, -the “e“s show the positions of the exponent bits, -the “m“s show the positions of the mantissa bits: seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm 01000100011110100001101110000101 The shifted mantissa is 1111101000.01101110000101 or 1000 + 7045/16384. The fractional part is 0.429992675781. */
Discussion
No comments yet.