
05.01.2007, 21:49
|
|
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
С нами:
10863746
Репутация:
519
|
|
Tikson не путай "ошибку переполнения" т.е "превышение диапазона значений переменной" с bof.
Почему не возникает ошибка переполнения, при введении числа больше 32767 или меньше -32767 , при испольновании переменной типа int, хотя она должна возникать ?
Она и возникает - выводит неправильное значение. Почему? Пример:
Код:
#include <iostream>
using namespace std;
main(void)
{
unsigned short short_var = 99999999;
cout << short_var << endl;
return 1;
}
Допустим что у тебя 32битный проц -> у unsigned short 2 байта = 16 бит (0 - 65535).
Так вот:
101111101011110000011111111(bin) = 99999999(dec)
Дабы вместить значение в 2хбайтовую переменную, то что отмечено красным отбрасывается - вот и все. Остается:
1110000011111111(bin) = 57599
что и выводится на экран 
|
|
|