<?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[Skurrile Arithmetik von Stringlängen]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgende zwei Zeilen Code</p>
<pre><code class="language-cpp">cout &lt;&lt; MAX_LEN_HEADER_BOTTOM &lt;&lt; &quot; &quot; &lt;&lt; DESCRIPTION.length() &lt;&lt; &quot; &quot; &lt;&lt; str.length() &lt;&lt; endl;
	cout &lt;&lt; MAX_LEN_HEADER_BOTTOM - DESCRIPTION.length() - str.length() &lt;&lt; endl;
</code></pre>
<p>liefern die Ausgabe</p>
<blockquote>
<p>80 11 70<br />
18446744073709551615</p>
</blockquote>
<p>wobei</p>
<pre><code class="language-cpp">const int MAX_LEN_HEADER_BOTTOM = 80;
const string DESCRIPTION = &quot; BEGIN OF: &quot;;
</code></pre>
<p>und str ein string ist. Weiss jemand, was hier passiert und wie man es abstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226627/skurrile-arithmetik-von-stringlängen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 19:29:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226627.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Nov 2008 22:54:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Skurrile Arithmetik von Stringlängen on Tue, 04 Nov 2008 13:11:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgende zwei Zeilen Code</p>
<pre><code class="language-cpp">cout &lt;&lt; MAX_LEN_HEADER_BOTTOM &lt;&lt; &quot; &quot; &lt;&lt; DESCRIPTION.length() &lt;&lt; &quot; &quot; &lt;&lt; str.length() &lt;&lt; endl;
	cout &lt;&lt; MAX_LEN_HEADER_BOTTOM - DESCRIPTION.length() - str.length() &lt;&lt; endl;
</code></pre>
<p>liefern die Ausgabe</p>
<blockquote>
<p>80 11 70<br />
18446744073709551615</p>
</blockquote>
<p>wobei</p>
<pre><code class="language-cpp">const int MAX_LEN_HEADER_BOTTOM = 80;
const string DESCRIPTION = &quot; BEGIN OF: &quot;;
</code></pre>
<p>und str ein string ist. Weiss jemand, was hier passiert und wie man es abstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609721</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Tue, 04 Nov 2008 13:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to Skurrile Arithmetik von Stringlängen on Mon, 03 Nov 2008 23:27:54 GMT]]></title><description><![CDATA[<p>Die ausgegebene Zahl entspricht 0xFFFFFFFFFFFFFFFF, also -1 - Dein Compiler behandelt das offensichtlich als einen unsigned 64Bit Integer - Wert, und gibt es deshalb als positiven Wert aus.<br />
Leider kann ich Dir weder sagen, warum er das tut, noch wie man es abstellt ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609726</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 03 Nov 2008 23:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Skurrile Arithmetik von Stringlängen on Tue, 04 Nov 2008 01:29:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cout &lt;&lt; MAX_LEN_HEADER_BOTTOM - static_cast&lt;ptrdiff_t&gt;(DESCRIPTION.length()) - static_cast&lt;ptrdiff_t&gt;(str.length()) &lt;&lt; endl;
</code></pre>
<p>BTW: warum er das tut? Weil size_t (Return-Typ von std::string::length) eben unsigned ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609744</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 04 Nov 2008 01:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Skurrile Arithmetik von Stringlängen on Tue, 04 Nov 2008 08:06:49 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>BTW: warum er das tut? Weil size_t (Return-Typ von std::string::length) eben unsigned ist.</p>
</blockquote>
<p>Danke, das läuft jetzt. Aber warum wandelt er bei arithmetischen Operationen, die sowohl int (MAX_LEN_HEADER_BOTTOM ist ein int) als auch unsigned int involvieren, die Typen auf solch bizarre Weise um?</p>
<p>Ich hätte angenommen, in so einem Fall würden alle unsigned int in int umgewandelt (wobei zu große unsigned int-Werte dann zu negativen int-Werten führen), aber das ist ja offenkundig nicht der Fall</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609802</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Tue, 04 Nov 2008 08:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Skurrile Arithmetik von Stringlängen on Tue, 04 Nov 2008 14:05:42 GMT]]></title><description><![CDATA[<p>Lies dir die &quot;integral promotion&quot; und &quot;standard promotion&quot; Regeln im C++ Standard durch.<br />
IIRC nimmt er unsigned wenn er keinen grösseren signed Typ hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610025</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 04 Nov 2008 14:05:42 GMT</pubDate></item></channel></rss>