<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: присвоение int величины double переменной</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html</link>
    <description>Друзья,&lt;br&gt;&lt;br&gt;изучаю С. Вот такой простой код:&lt;br&gt;&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br&gt;&lt;br&gt;double u1;&lt;br&gt;u1 = rand() / RAND_MAX;&lt;br&gt;&lt;br&gt;По стандарту rand() возвращает int, почему же результат операции (rand() / RAND_MAX) не преобразовывается к double и нужно делать это принудительно:&lt;br&gt;&lt;br&gt;u1 = (double)rand() / RAND_MAX;&lt;br&gt;&lt;br&gt;Спасибо!&lt;br&gt;PS. еще много непонятного в С, поэтому такие глупые вопросы.&lt;br&gt;</description>

<item>
    <title>присвоение int величины double переменной (Alexander S. Salieff)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#10</link>
    <pubDate>Sat, 13 Dec 2008 02:06:03 GMT</pubDate>
    <description>Чего развыступались? Независимо от вступления человек разжевал пошагово процесс, так нет, и этому не рады, а как еще разъяснить, телепатией, чтоли?&lt;br&gt;&lt;br&gt;&amp;gt;Вы, разумеется, абсолютно правы... с точки зрения математики. Но зачем же так &lt;br&gt;&amp;gt;высокомерно говорить? Ведь форум - это не место, где подскажут, кто &lt;br&gt;&amp;gt;какой идиот и насколько кому до кого далеко. А место, где &lt;br&gt;&amp;gt;люди собрались, чтобы помочь друг другу. И типа того... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;P.S. Ну и для того, конечно, чтобы обстебать двоечников-студентов, дабы навсегда отвадить &lt;br&gt;&amp;gt;их от написания программ, чтобы они, не приведи господь, не написали &lt;br&gt;&amp;gt;какой-нибудь кривой программы управления ядерным реактором, не говоря уже о коллайдерах. &lt;br&gt;&amp;gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (jd2)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#9</link>
    <pubDate>Wed, 12 Nov 2008 14:42:41 GMT</pubDate>
    <description>Вы, разумеется, абсолютно правы... с точки зрения математики. Но зачем же так высокомерно говорить? Ведь форум - это не место, где подскажут, кто какой идиот и насколько кому до кого далеко. А место, где люди собрались, чтобы помочь друг другу. И типа того...&lt;br&gt;&lt;br&gt;P.S. Ну и для того, конечно, чтобы обстебать двоечников-студентов, дабы навсегда отвадить их от написания программ, чтобы они, не приведи господь, не написали какой-нибудь кривой программы управления ядерным реактором, не говоря уже о коллайдерах.&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#8</link>
    <pubDate>Tue, 11 Nov 2008 03:18:09 GMT</pubDate>
    <description>Так у вас еще и с математикой проблемы? Расскажу секрет: 2.0 равно 2 с точки зрения математики. Переменная res у вас имеет тип с плавающей точкой, а значит в ней ВСЕГДА присутствует мантисса и порядок, оно на аппаратном уровне так хранится, а вот выводить на терминал вы ее можете в каком угодно виде.&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (Василий)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#7</link>
    <pubDate>Mon, 10 Nov 2008 03:22:20 GMT</pubDate>
    <description>&amp;gt;3. Выполняется операция присваивания. &quot;2&quot; целое, а вот res с плавающей точкой, &lt;br&gt;&amp;gt;производится преобразование и в res попадет &quot;2.0&quot; &lt;br&gt;&amp;gt;Что остается непонятным? &lt;br&gt;&lt;br&gt;неправда, в res как раз попадает 2, проверялось на gcc-4.1.2 Если хотя бы один операнд содержал плавающую точку или применялось бы явное (explicit) преообразование (type casting), тогда и результат преобразовался бы к double. &lt;br&gt;&lt;br&gt;В этом и была суть вопроса, если бы вы внимательно прочитали.&lt;br&gt;&lt;br&gt;PS. не стоит так раздражаться на вопросы новичков, все проходят свои &quot;первые шаги в С&quot;.&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#6</link>
    <pubDate>Mon, 10 Nov 2008 02:21:00 GMT</pubDate>
    <description>Мда, тяжелее всего объяснять очевидные вещи. Попробуем еще раз. Напомним некоторые факты&lt;br&gt;1. У опрераций есть приоритеты&lt;br&gt;2. Все операции выполняются по очереди, с учетом результатов предыдущих, но без учета следующих. &lt;br&gt;3. Присваивание это тоже операция&lt;br&gt;Итого получаем:&lt;br&gt;1. Деление имеет более высокий приоритет чем присваивание, значит выполняется первым&lt;br&gt;2. &quot;5&quot; это целое число, &quot;2&quot; это целое число, значит будет выполнятся целочисленное деление и результатом его будет &quot;2&quot;.&lt;br&gt;3. Выполняется операция присваивания. &quot;2&quot; целое, а вот res с плавающей точкой, производится преобразование и в res попадет &quot;2.0&quot;&lt;br&gt;Что остается непонятным?&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (Василий)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#5</link>
    <pubDate>Mon, 10 Nov 2008 00:58:29 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;Потому что оба операнда являются целыми числами. Чтобы получить дробное, необходимо, чтобы &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;хотя бы один операнд был вещественным. &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Гм.. но ведь результат мы присваиваем переменной, объявленной как double. По идее &lt;br&gt;&amp;gt;&amp;gt;правый операнд приводится к типу левого? &lt;br&gt;&amp;gt;А еще все наверное проходили &lt;br&gt;&amp;gt;double res = 5/2 &lt;br&gt;&amp;gt;где res оказывается развным 2, а не 2.5 &lt;br&gt;&amp;gt;Так начинающие программисты узнают о приведении типов :))) &lt;br&gt;&lt;br&gt;с этим уже сталкивался. Но в K&amp;R конкретно не описано, почему так получается, т.е. где в стандарте точно описано поведение и объяснение такого поведения?&lt;br&gt;&lt;br&gt;Например, везде пишут, что преобразования операндов происходят естественным образом. Выходит и здесь:&lt;br&gt;&lt;br&gt;double res = 5/2&lt;br&gt;&lt;br&gt;это должно быть естественно, т.е. результат деления 5 на 2 присваивается переменной с плавающей точкой.&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (mikra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#4</link>
    <pubDate>Fri, 07 Nov 2008 10:35:56 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Потому что оба операнда являются целыми числами. Чтобы получить дробное, необходимо, чтобы &lt;br&gt;&amp;gt;&amp;gt;хотя бы один операнд был вещественным. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Гм.. но ведь результат мы присваиваем переменной, объявленной как double. По идее &lt;br&gt;&amp;gt;правый операнд приводится к типу левого? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;P.S. У Кернигана и Ритчи это вроде бы есть. Ищите в окрестностях &lt;br&gt;&amp;gt;&amp;gt;программки для перевода градусов цельсия в фаренгейты. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;обязательно поищу. &lt;br&gt;&lt;br&gt;А еще все наверное проходили&lt;br&gt;double res = 5/2&lt;br&gt;где res оказывается развным 2, а не 2.5&lt;br&gt;Так начинающие программисты узнают о приведении типов :)))&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#3</link>
    <pubDate>Fri, 07 Nov 2008 09:07:45 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Потому что оба операнда являются целыми числами. Чтобы получить дробное, необходимо, чтобы &lt;br&gt;&amp;gt;&amp;gt;хотя бы один операнд был вещественным. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Гм.. но ведь результат мы присваиваем переменной, объявленной как double. По идее &lt;br&gt;&amp;gt;правый операнд приводится к типу левого? &lt;br&gt;&lt;br&gt;Ну да, приводится (в данном случае он &quot;расширится&quot; до double). Только это уже результат будет приводится. А результат-то имеет тип int..&lt;br&gt;&lt;br&gt;P.S. Но лучше не слушайте меня, а почитайте книжку или даже стандарт!&lt;br&gt;</description>
</item>

<item>
    <title>присвоение int величины double переменной (Василий)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7689.html#2</link>
    <pubDate>Fri, 07 Nov 2008 07:57:51 GMT</pubDate>
    <description>&amp;gt;Потому что оба операнда являются целыми числами. Чтобы получить дробное, необходимо, чтобы &lt;br&gt;&amp;gt;хотя бы один операнд был вещественным. &lt;br&gt;&lt;br&gt;Гм.. но ведь результат мы присваиваем переменной, объявленной как double. По идее правый операнд приводится к типу левого?&lt;br&gt;&lt;br&gt;&amp;gt;P.S. У Кернигана и Ритчи это вроде бы есть. Ищите в окрестностях &lt;br&gt;&amp;gt;программки для перевода градусов цельсия в фаренгейты. &lt;br&gt;&lt;br&gt;обязательно поищу.&lt;br&gt;</description>
</item>

</channel>
</rss>
