Форум программистов, компьютерный форум CyberForum.ru

Подскажите почему так? - C++

Восстановить пароль Регистрация
 
zim32
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
22.01.2011, 01:30     Подскажите почему так? #1
Я конечно новичок в с++, но чего-то это уже совсем..
Почему строка
cout << 1/2;
выводит "0" ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2011, 01:30     Подскажите почему так?
Посмотрите здесь:

Почему так работает, а так нет? C++
Объясните почему так C++
почему это так работает C++
C++ Объясните почему так
C++ Почему так отображается массив?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.01.2011, 01:34     Подскажите почему так? #2
zim32, компилятор создаёт две временных переменных типа int, делит их друг на друга, и в результате целочисленного деления таки получается 0. Попробуйте
C++
1
cout << ( 1.0 / 2.0 );
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.01.2011, 01:35     Подскажите почему так? #3
zim32, Потому что при деление двух целых числел, без явного преведения типов, дробная часть отбрасываеться и остаеться, соответственно, только целая.
1/2 = 0.5(отбрасываем дробную часть) => 1/2 = 0
Чтобы показало 0.5 нужно зделать так
C++
1
cout << 1.0/2;
zim32
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
22.01.2011, 01:36  [ТС]     Подскажите почему так? #4
Спасибо. Разбаловался я с этими языками с динамической типизацией. )
silent_1991
22.01.2011, 13:41
  #5

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
компилятор создаёт две временных переменных типа int
А разве оптимизацию отменили ? Или я чего-то не понимаю?

alex_x_x
22.01.2011, 13:53     Подскажите почему так?
  #6

Не по теме:

silent_1991, так проще понимать =)

Yandex
Объявления
22.01.2011, 13:53     Подскажите почему так?
Ответ Создать тему
Опции темы

Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru