Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zim32
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
#1

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

22.01.2011, 01:30. Просмотров 357. Ответов 5
Метки нет (Все метки)

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

Почему не собирается программа? Подскажите что не так? - C++
File.h #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class File { private: ...

Почему так работает, а так нет? - C++
так работает // Возведение b в степень s по модулю m float powmod(float b, long s) { float c=1; while (s) {

Почему так? - C++
Почему значение psumma равняется нулю? if (e&gt;0) { int k = 0; double psumma = -1; cout&lt;&lt;&quot;k =...

While и for, почему так? - C++
#include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt; int main() { for(int counter = 1;counter &lt;=10;counter++) ...

Почему так? - C++
Я вот уже довольно много времени читаю книги и разные коды по программированию, но все так и не понял. Почему хорошие программисты...

Объясните почему так - C++
#include &lt;iostream&gt; using namespace std; #define MAT(a,b) a/b; int main() { cout&lt;&lt;2*MAT(2+5,3); return 0; } В тестах...

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

Не по теме:

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

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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2011, 13:53
Привет! Вот еще темы с ответами:

Объясните почему так - C++
Когда я ввожу следующие числа: x = 2222222222 n = 3333333333 И x = 2222222221 (один знак поменяли) n = 3333333333 То...

Подскажите что не так? - C++
Нужно заменить цифры в числе на ноль, если цифра равна &quot;a&quot;. А затем вывести получившееся число. число N - натуральное, а - является...

Подскажите, что не так? - C++
//bow.h using namespace std; class Bow { string color; bool drawn; int arrows;

Подскажите что не так? - C++
Класс #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; #include &quot;dot.h&quot; Dot::Dot() { x=0; y=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
22.01.2011, 13:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru