Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Делаю на С++ так cout << 30000 * 30000 * 30000 ; а ответ = 1835577344. С чем это может быть связано?
1
  1  Нигматуллин Нияз Габдуллазянович [СПбГУ ИТМО], 13 октября 2009 г. 0:14:31
      потому-что все вычисления происходят в типе int, нужно написать так:
long long n = 30000LL * 30000 * 30000
предположим у нас такое выражение:
int n, m;
cin >> n >> m;
long long f;
f = n * m;
здесь вычисление произведения произойдет сначала в типе int, а потом только при присвоении, переводится в тип long long, поэтому правильней будет написать:
f = (long long)n * m;
  2  Канзитдинов Батыр Никматуллаевич, 12 октября 2009 г. 22:56:37
      А я и в long long int пихал . . . Не получалось :-?
  3  Субач Алексей Дмитриевич, 12 октября 2009 г. 22:54:21
      с переполнением типа int
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru