<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345764</guid>
        <pubDate>Sun, 25 Apr 2004 18:07:49 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345764</link>
        <description><![CDATA[nvm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Flex Ferrum &#064; 25.04.04, 14:42</span><div class='quote '>Ну почему же? Все специфицировано и вполне логично. Все целые (меньшие по размеру) продвигаются до int, все плавающие (:) ) - до double. Все правильно. Что тут запутанного? Наоборот - достигается некоторая унификация.</div></div><br>
..Не то чтобы сильно логично - скорее, уступка для удобства технической реализации.<br>
Но, пожалуй, не так и дико, как кажется на первый взгляд: раз конкретного шаблона нет, то почему бы не поделать неявных кастов.<br>
<br>
Спасибо за интересную информацию.<br>
..Сколько использую С - ни разу с этим не столкнулся. Видимо, потому что не использую функции с переменным числом параметров, так как в С++ они не нужны. <br>
А при использовании printf этого можно не заметить, так как ошибкам в нем незнание этого факта не приводит.]]></description>
        <author>nvm</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345626</guid>
        <pubDate>Sun, 25 Apr 2004 14:42:16 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345626</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>nvm</strong>, 25.04.04, 17:30<br>
Да уж.. теперь будет известно.. если сумею поверить в такое (&#33;).<br>
..Иногда возникает ощущение, что разработчики языков специально включают фичи, которые на трезвую голову не вообразить, чтобы запутать..</div></div><br>
Ну почему же? Все специфицировано и вполне логично. Все целые (меньшие по размеру) продвигаются до int, все плавающие (:) ) - до double. Все правильно. Что тут запутанного? Наоборот - достигается некоторая унификация.]]></description>
        <author>Flex Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345616</guid>
        <pubDate>Sun, 25 Apr 2004 14:30:20 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345616</link>
        <description><![CDATA[nvm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Flex Ferrum &#064; 25.04.04, 14:06</span><div class='quote '>Да будет тебе известно, что при передачи float-параметров в функции с переменным количеством аргументов, производится их продвижение до типа double.</div></div><br>
Да уж.. теперь будет известно.. если сумею поверить в такое (&#33;).<br>
..Иногда возникает ощущение, что разработчики языков специально включают фичи, которые на трезвую голову не вообразить, чтобы запутать..<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Как сказать. Можешь ты на вскидку (не смотря в хелп) сказать - что означают числа 7 и 3 в спецификаторе %7.3f? А вот в случае с потоками - все ясно без лишних комменатриев.</div></div><br>
Имя setw тоже мало о чем говорит..]]></description>
        <author>nvm</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345603</guid>
        <pubDate>Sun, 25 Apr 2004 14:06:14 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345603</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>nvm</strong>, 25.04.04, 16:34<br>
..У меня такое подозрение, что приведенный выше пример как раз и демонстрирует небезопасность printf, так как константа типа double и по идее не должна корректно выводиться по спецификатору %f.</div></div><br>
Да будет тебе известно, что при передачи float-параметров в функции с переменным количеством аргументов, производится их продвижение до типа double. Форматные спецификаторы f, e и g определяют лишь способ вывода числа с плавающей точкой (fixed, engeneer или general).<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>nvm</strong>, 25.04.04, 16:34<br>
С другой стороны, формат в printf задается более наглядно, и в целом этот способ, на мой взгляд, удобнее, так как ошибки несоответствия типа в printf, хоть и неизбежны, но очень легко обнаруживаются и исправляются..</div></div><br>
Как сказать. Можешь ты на вскидку (не смотря в хелп) сказать - что означают числа 7 и 3 в спецификаторе %7.3f? А вот в случае с потоками - все ясно без лишних комменатриев.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>nvm</strong>, 25.04.04, 16:34<br>
Кстати, это может даже хорошо, если изначально в программе ошибок не слишком мало - это создаст спортивный интерес тестировщикам, которые в противном случае просто заснут и пропустят редкие ошибки. </div></div><br>
Ага. Если тестеры наличиствуют. А в противном случае - это гемор для программиста.]]></description>
        <author>Flex Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345591</guid>
        <pubDate>Sun, 25 Apr 2004 13:34:35 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345591</link>
        <description><![CDATA[nvm: ..У меня такое подозрение, что приведенный выше пример как раз и демонстрирует небезопасность printf, так как константа типа double и по идее не должна корректно выводиться по спецификатору %f.<br><br>С другой стороны, формат в printf задается более наглядно, и в целом этот способ, на мой взгляд, удобнее, так как ошибки несоответствия типа в printf, хоть и неизбежны, но очень легко обнаруживаются и исправляются..<br><br>Кстати, это может даже хорошо, если изначально в программе ошибок не слишком мало - это создаст спортивный интерес тестировщикам, которые в противном случае просто заснут и пропустят редкие ошибки.]]></description>
        <author>nvm</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345483</guid>
        <pubDate>Sun, 25 Apr 2004 09:59:47 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345483</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>_HuGo_</strong>, 25.04.04, 08:17<br>
А разница большая... Cout это потоковый вывод, а printf - это функция с переменным количеством параметров.</div></div><br>
Ну, формально говоря, и то, и другое - это потоковый вывод :). Непотоковый - это напрямую с помощью методов open/read/write и т. п. Но это уже тонкости.<br>
В свое время про различие между сout и printf мне сказали следующее - &quot;с помощью printf нельзя сделать чего-то такого, что невозможно сделать с помощью cout&quot;. Т. е. функциональность у них одна, различаются только способы доступа к ней. Например, следующие записи эквивалентны:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">printf(&quot;%7.3f&quot;, 0.15);</div><div class="code_line">std::cout &#60;&#60; std::setw(7) &#60;&#60; std::setprecision(3) &#60;&#60; 0.15 &#60;&#60; std::endl;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Вообще говоря, в C++ рекомендуется пользоваться C++-потоками. Они типобезопасны, и по функционалу не уступают C-шным. Так что...]]></description>
        <author>Flex Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345469</guid>
        <pubDate>Sun, 25 Apr 2004 09:28:28 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345469</link>
        <description><![CDATA[p_kolya: Теперь понял немного :)]]></description>
        <author>p_kolya</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345437</guid>
        <pubDate>Sun, 25 Apr 2004 08:39:16 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345437</link>
        <description><![CDATA[x0ras: А еще отличие в том, что можно выводить пользовательские типы&#33; Т.е. ты написал свой класс, перегрузил operator&lt;&lt; и можешь выводить свой тип как cout &lt;&lt; <em class='tag-i'>объект_моего_класса</em> . Очень удобно и полезно&#33;]]></description>
        <author>x0ras</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345431</guid>
        <pubDate>Sun, 25 Apr 2004 08:27:27 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345431</link>
        <description><![CDATA[_HuGo_: Есть разница для тебя, как программиста... Например, у тебя стоит ограничение на вывод вещественного числа. Тебе требуется вывести число и два знака после запятой. Для функции printf это выглядит так printf(&quot;%7.2f&quot;,a) , где 7.2 означает, что число не длиннее 7 знаков, и два после запятой. С cout ты так просто не отделаешься...]]></description>
        <author>_HuGo_</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345402</guid>
        <pubDate>Sun, 25 Apr 2004 07:18:16 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345402</link>
        <description><![CDATA[nvm: Для пользователя разницы никакой. Для него нет способа даже узнать, какой вариант использован в программе..]]></description>
        <author>nvm</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345373</guid>
        <pubDate>Sun, 25 Apr 2004 06:17:07 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345373</link>
        <description><![CDATA[p_kolya: Это я тоже понимаю, что cout потоковый.<br>А со стороны пользователя, который запускает эту прогу, разница в чем?]]></description>
        <author>p_kolya</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345351</guid>
        <pubDate>Sun, 25 Apr 2004 05:23:13 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345351</link>
        <description><![CDATA[nvm: В основном, разница в синтаксисе.<br>Но при работе по найму наверняка будут требовать использования cout, хотя для форматного вывода это менее удобно.]]></description>
        <author>nvm</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345347</guid>
        <pubDate>Sun, 25 Apr 2004 05:17:01 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345347</link>
        <description><![CDATA[_HuGo_: А разница большая... Cout это потоковый вывод, а printf - это функция с переменным количеством параметров. У неё основное отличие (на твоём уровне) - это наличие у функции printf управляющей  строки, при помощи которой выполняются спецификации преобразования&#33; Ну это только самая самая верхушка айсберга&#33;]]></description>
        <author>_HuGo_</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345326</guid>
        <pubDate>Sun, 25 Apr 2004 03:24:22 +0000</pubDate>
        <title>cout и printf</title>
        <link>https://forum.sources.ru/index.php?showtopic=52375&amp;view=findpost&amp;p=345326</link>
        <description><![CDATA[p_kolya: Я вот си++ только еще изучаю и у меня есть вопросик :)<br>
В чем разница между printf из stdio.h и cout из iostream.h?<br>
Если выводить текст, то одно и тоже:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">printf(&quot;Hello, World\n&quot;);</div></ol></div></div></div></div><br>
и<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">cout&#60;&#60;&quot;Hello, World!\n&quot;;</div></ol></div></div></div></div><br>
Так в чем разница?]]></description>
        <author>p_kolya</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	