<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; gcc & g++]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=8299</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=8299&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «gcc & g++».]]></description>
		<lastBuildDate>Sun, 14 Nov 2010 17:07:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112945#p112945</link>
			<description><![CDATA[<p><strong>zhevak</strong>, </p><div class="quotebox"><cite>zhevak пишет:</cite><blockquote><p>int x;<br />int y;</p><p>x = 3;<br />y = x++ + ++x;</p></blockquote></div><p>вообще-то, как модератор я Вас забанить за такой код <strong>обязан</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Sun, 14 Nov 2010 17:07:50 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112945#p112945</guid>
		</item>
		<item>
			<title><![CDATA[Re: gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112880#p112880</link>
			<description><![CDATA[<p><strong>zhevak</strong>, <br />Вопрос: чему будет равно значение y?<br />10</p>]]></description>
			<author><![CDATA[null@example.com (Hvzh)]]></author>
			<pubDate>Sun, 14 Nov 2010 14:10:49 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112880#p112880</guid>
		</item>
		<item>
			<title><![CDATA[Re: gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112329#p112329</link>
			<description><![CDATA[<p>напрягает не разное поведение программ, и даже не обстоятельство не знания топикстартером потоковых форматов, а то, что при очень &quot;хорошем&quot; типе <strong>double</strong> такая большая ошибка округления. Я бы еще понял, если б это был <strong>float</strong>, но <strong>double</strong> ... <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /></p><p>хех. Понеслась!<br />1. Допишите модификатор <strong>volatile</strong> в объявлении переменной <strong>i</strong>. Таким образом компилятор не будет размещать переменную в регистрах математического сопроцессора, а создаст ее (т.е. зарезервирует для нее место) в памяти.<br />2. Создайте еще одну переменную -- указатель на байт (<strong>unsigned char *</strong>), присвойте ей адрес переменной <strong>i</strong> с предварительной кастомизацией типа.<br />3. Переменная <strong>i</strong> занимает 8 байт. Выведите их в консоль. Сравните что у Вас лежит в памяти в случае с Си, а что в случае с Си++, когда <strong>i</strong> должна быть равна нулю.</p>]]></description>
			<author><![CDATA[null@example.com (zhevak)]]></author>
			<pubDate>Fri, 12 Nov 2010 16:29:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112329#p112329</guid>
		</item>
		<item>
			<title><![CDATA[Re: gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112308#p112308</link>
			<description><![CDATA[<p>если по теме.... то в printf задается форматирование..... замените на </p><div class="codebox"><pre><code>std::cout &lt;&lt;std::fixed&lt;&lt; i &lt;&lt; std::endl;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (odin)]]></author>
			<pubDate>Fri, 12 Nov 2010 15:44:31 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112308#p112308</guid>
		</item>
		<item>
			<title><![CDATA[Re: gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112304#p112304</link>
			<description><![CDATA[<p>Во первых, это два разных языка, а не диалект одного. Во вторых, это два разных компилятора. В третьих, у них разные парадигмы ввода/вывода. ... Разные библиотеки, разные люди, писавшие коды этих библиотек и т.д. и т.п. Требовать одного и того же поведения на заграничных условиях (т.е. там, где не действуют стандарты языка) от разных инструментов -- ну, согласитесь -- глупо!</p><p>Это хорошо, что вы увидели такое аномальное поведение, но заморачиваться на этом не стоит. Просто примите это как есть, и помните об этой фиче.</p><p>Хотите еще пример? Извольте! Имеем два языка -- C/C++ и C#. (В данном случае С и С++ в одной категории.)<br />имеем рабочий, но сомнительный код. (Сомнительный -- в том плане, что такое написание крайне не рекомендуется.)</p><p>int x;<br />int y;</p><p>x = 3;<br />y = x++ + ++x;</p><p>Вопрос: чему будет равно значение y?</p>]]></description>
			<author><![CDATA[null@example.com (zhevak)]]></author>
			<pubDate>Fri, 12 Nov 2010 15:34:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112304#p112304</guid>
		</item>
		<item>
			<title><![CDATA[gcc & g++]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=112291#p112291</link>
			<description><![CDATA[<p>Имеется код на C и C++<br /></p><div class="codebox"><pre><code>/*c.c*/
#include &lt;stdio.h&gt;

int main()
{
   double i;
   for (i=-0.4; i&lt;=0.4; i+=0.1) printf(&quot;%.1f\n&quot;,i);
   return 0;
}</code></pre></div><br /><div class="codebox"><pre><code>/*cpp.cpp*/
#include &lt;iostream&gt;
int main()
{
    for (double i=-0.4; i&lt;=0.4; i+=0.1) 
        std::cout &lt;&lt; i &lt;&lt; std::endl;
    return 0;
}</code></pre></div><p><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ gcc c.c -o c<br />$ g++ cpp.cpp -o cpp<br />$ ./c<br />-0.4<br />-0.3<br />-0.2<br />-0.1<br />-0.0<br />0.1<br />0.2<br />0.3<br />0.4<br />$ ./cpp <br />-0.4<br />-0.3<br />-0.2<br />-0.1<br />-2.77556e-17<br />0.1<br />0.2<br />0.3<br />0.4<br /></div></p><p>я понимаю, что чистого нуля тут не получается из за представления числа 0.1 в двоичной системе. Но почему на C выводит 0, а на С++ нет? Различия в оптимизации или что? Кто может объяснить мне это?</p>]]></description>
			<author><![CDATA[null@example.com (LifeIsMusic)]]></author>
			<pubDate>Fri, 12 Nov 2010 14:44:36 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=112291#p112291</guid>
		</item>
	</channel>
</rss>
