Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / переполнение int / 5 сообщений из 5, страница 1 из 1
21.01.2005, 13:06
    #32877024
crzy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переполнение int
прымитив:

long k=3333333333;

printf("%u\n",k);
printf("%d\n",k);


3333333333
-961633963

каким образом происходит переполнение?
(то есть что происходит на самом деле с 3333333333 ?)
...
Рейтинг: 0 / 0
21.01.2005, 13:18
    #32877061
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переполнение int
Да нет тут никакого переполнения. Функции print Вы передаете ссылку на 4 байта памяти. 0-й бит старшего байта установлен в 1, стало быть в случае беззнакового целого вы получите число больше чем 2 147 483 648, а для знакового целого это означает, что число отрицательное. Вот и все.
...
Рейтинг: 0 / 0
21.01.2005, 13:34
    #32877116
crzy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переполнение int
спасибо, я наверное немножко неправильно объяснил.
Компилятор говорит
warning: decimal constant is so large that it is unsigned
я так понимаю, как раз об этом предупредил компилятор :-)

В общем, по вышестоящему примеру как сделать ручками такое
преобразование 3333333333 в -961633963
(но без приведения типов?)
...
Рейтинг: 0 / 0
21.01.2005, 16:46
    #32877791
crzy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переполнение int
как все-таки сделать?
...
Рейтинг: 0 / 0
21.01.2005, 19:21
    #32878086
crzy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переполнение int
сорри, уже врубился :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / переполнение int / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]