<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[gcc 3.4.4] converting of negative value ... size_t]]></title><description><![CDATA[<p>kann mir einer die folgende warnung erklären?</p>
<pre><code class="language-cpp">{
...
   std::string filename = &quot;c:/aaa/bbb/ccc&quot;;      
 ...  
   std::size_t pos1 = filename.rfind(&quot;/&quot;);  //gcc 3.4.4 warning: converting of
                                            // negative value `-0x00000000000000001' to `size_t'

   if(pos1==std::string::npos) pos1 = 0;

   std::size_t pos2 = filename.rfind(&quot;.&quot;);
   if(pos2!=std::string::npos &amp;&amp; pos2&gt;pos1)
      return filename.substr(pos2+1);

...
}
</code></pre>
<p>der Rückgabetyp von rfind ist ein size_t -&gt; i.d.R. ein typedef auf unsigned int, der natürlich nicht negativ sein kann. aber wo genau ist das Problem bei der Zeile???</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199925/gcc-3-4-4-converting-of-negative-value-size_t</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 22:08:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199925.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Dec 2007 16:21:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gcc 3.4.4] converting of negative value ... size_t on Sat, 08 Dec 2007 16:21:07 GMT]]></title><description><![CDATA[<p>kann mir einer die folgende warnung erklären?</p>
<pre><code class="language-cpp">{
...
   std::string filename = &quot;c:/aaa/bbb/ccc&quot;;      
 ...  
   std::size_t pos1 = filename.rfind(&quot;/&quot;);  //gcc 3.4.4 warning: converting of
                                            // negative value `-0x00000000000000001' to `size_t'

   if(pos1==std::string::npos) pos1 = 0;

   std::size_t pos2 = filename.rfind(&quot;.&quot;);
   if(pos2!=std::string::npos &amp;&amp; pos2&gt;pos1)
      return filename.substr(pos2+1);

...
}
</code></pre>
<p>der Rückgabetyp von rfind ist ein size_t -&gt; i.d.R. ein typedef auf unsigned int, der natürlich nicht negativ sein kann. aber wo genau ist das Problem bei der Zeile???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417109</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to [gcc 3.4.4] converting of negative value ... size_t on Sat, 08 Dec 2007 16:28:11 GMT]]></title><description><![CDATA[<p>Der Rückgabetyp sieht aber eher nach 64bit aus.<br />
Verwende mal std::string::size_type statt std::size_t.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417116</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:28:11 GMT</pubDate></item><item><title><![CDATA[Reply to [gcc 3.4.4] converting of negative value ... size_t on Sat, 08 Dec 2007 16:50:04 GMT]]></title><description><![CDATA[<p>ja, es ist in der tat ein 64bit rückgabetyp!</p>
<p>mit size_type sieht es schon besser aus. danke</p>
<p>edit: problem gefunden... die fehlerursache war in einer anderen datei. dort wurde dem size_t tatsächlich -1 zugewiesen.</p>
<p>ist es prinzipiell egal, ob ich std::size_t verwende anstatt das den size_type des entsprechenden containers???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417132</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to [gcc 3.4.4] converting of negative value ... size_t on Sat, 08 Dec 2007 19:25:20 GMT]]></title><description><![CDATA[<p>Ich verwende bisher auch immer std::size_t, da dies kürzer zu schreiben ist als der Container-Datentyp.<br />
Aber sobald eine Warnung erscheint, versuche ich diese natürlich zu eliminieren.<br />
Bisher habe ich auch nur mit 32Bit-Compilern gearbeitet, d.h. es kann also sein, daß einige meiner alten Programme unter 64Bit-Compilern auch Warnungen erzeugen würden (aber wer kann schon von sich behaupten, seine C/C++ Programme für alle Compiler und Betriebssysteme kompatibel geschrieben zu haben? -)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417251</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 08 Dec 2007 19:25:20 GMT</pubDate></item></channel></rss>