crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

vankleef
  опции профиля:
сообщение 4.6.2011, 23:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


есть вот такой код
int l=10000000;
cout<<l+1;

компилится все отлично, без ошибок.
но ведь значение int'a в 10000000 превосходит его предел как в знаковом, так и в беззнаковом варианте.
так вот почему это работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 5.6.2011, 1:42
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


да, alex977, правильно указал на получение максимального int'а. на самом деле, битность зависит и от системы, и от компилятора. 2 байта - это гарантия ДЛЯ ВСЕХ компиляторов, в том числе для чистого С. это важно для совместимости кода разных компиляторов и при передаче данных. но это не означает, что данный конкретный компилятор будет юзать для типа int два байта. вообще, давно есть типы int16, int32, int64 (названия могут варьироваться слегка от компилятора к компилятору, но суть понятна). если нужна конкретика - юзай более точные типы данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 22.6.2025, 11:21