Показать сообщение отдельно

  #13  
Старый 05.01.2007, 21:49
Deem3n®
Постоянный
Регистрация: 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
что и выводится на экран