<?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[a=b-----c;?]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
int main()
{
        int a, b = 3, c = 23;
        a = b-- - --c; // geht
        a = b--- --c;  // geht
        //a = b-----c;  // geht nicht

        return 0;
}
</code></pre>
<p>Warum funktioniert a = b-----c; nicht? Liegt das Problem nur darin, das der Compiler nicht - von -- unterscheiden kann oder scheiterts schon vorher?</p>
<p>Ich glaub der Compiler erzeugt folgende Token:<br />
1. Token a<br />
2. Token =<br />
3. Token b<br />
4. Token --<br />
5. Token -- // &lt;- Problem<br />
6. Token -<br />
7. Token c<br />
8. Token ;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169200/a-b-c</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:29:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169200.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Jan 2007 08:34:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 08:36:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
int main()
{
        int a, b = 3, c = 23;
        a = b-- - --c; // geht
        a = b--- --c;  // geht
        //a = b-----c;  // geht nicht

        return 0;
}
</code></pre>
<p>Warum funktioniert a = b-----c; nicht? Liegt das Problem nur darin, das der Compiler nicht - von -- unterscheiden kann oder scheiterts schon vorher?</p>
<p>Ich glaub der Compiler erzeugt folgende Token:<br />
1. Token a<br />
2. Token =<br />
3. Token b<br />
4. Token --<br />
5. Token -- // &lt;- Problem<br />
6. Token -<br />
7. Token c<br />
8. Token ;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201593</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Wed, 03 Jan 2007 08:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 08:45:04 GMT]]></title><description><![CDATA[<p>Genau so sieht's aus - der Compiler packt solange Zeichen zusammen, wie er daraus gültige Tokens basteln kann, damit wird &quot;a=b-----c;&quot; zu &quot;a = b -- -- - c ;&quot; - und das ergibt einen Fehler, weil &quot;b--&quot; ein rvalue ist und deshalb nicht nochmal dekrementiert werden kann.</p>
<p>(aus dem gleichen Grund mußt du ein Leerzeichen bei Gebilden wie <code>vector&lt;bitset&lt;8&gt; &gt; masks;</code> setzen - andernfalls würde er die beiden &gt; zu einem Shift-Operator zusammenfassen, der an dieser Stelle nicht erlaubt ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201598</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 08:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 09:18:21 GMT]]></title><description><![CDATA[<p>Nennt man das nicht &quot;maximal munch problem&quot; ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201620</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 09:23:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(aus dem gleichen Grund mußt du ein Leerzeichen bei Gebilden wie <code>vector&lt;bitset&lt;8&gt; &gt; masks;</code> setzen - andernfalls würde er die beiden &gt; zu einem Shift-Operator zusammenfassen, der an dieser Stelle nicht erlaubt ist)</p>
</blockquote>
<p>es war einfach ziemlich dumm vom c++ erfinder, die &lt;&gt; als klammern bei der templatesyntax zu verwenden...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201628</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 09:29:15 GMT]]></title><description><![CDATA[<p>Was hättest du denn verwendet? Alle normalen Klammern sind bereits von C her vergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201633</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 09:39:32 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Alle normalen Klammern sind bereits von C her vergeben.</p>
</blockquote>
<p>warum gehen normale klammern nicht? zwei klammern direkt hintereinander '((' könnten doch nicht als was anderes missverstanden werden...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201644</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 09:45:55 GMT]]></title><description><![CDATA[<p>Klar können sie - z.B. als C-Style Cast <code>memcpy((void*)&amp;data,(void*)buffer);</code> , als doppelte Klammer in arithmetischen Ausdrücken oder als geklammerter Parameter <code>len=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201655</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:02:42 GMT]]></title><description><![CDATA[<p>Wenn der so dumm war stellt sich die Frage warum viele andere sich das für Generic-Syntax abgeguckt haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>In VB gibts dafür Runde Klammern und das Schlüsselwort Of, aber ob das besser/schöner ist wage ich zu bezweifeln</p>
<pre><code>Function Max(Of Type)(A as Type, B as Type) as Type
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1201669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201669</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:04:27 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Klar können sie - z.B. als C-Style Cast <code>memcpy((void*)&amp;data,(void*)buffer);</code></p>
</blockquote>
<p>...und wo ist da ein fehler?<br />
erste klammer aufgemacht --&gt; parameterliste beginnt<br />
zweite klammer aufgemacht --&gt; cast beginnt<br />
wenn einer sowas schreibt, aber was anderes haben will, hat er ja selber schuld.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201670</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:11:59 GMT]]></title><description><![CDATA[<p>Da habe ich wohl deinen vorigen Beitrag falsch verstanden. Normale Klammern ( (...), {...} oder [...] ) haben in C bereits eine vorgegebene Bedeutung (teilweise sogar mehrere), darum konnte man sie nicht als Template-Klammern verwenden. Deshalb wurde für Templates eine &quot;neue&quot; Klammer-Form &lt;...&gt; verwendet, die aber leider gelegentlich mit der ursprünglichen Bedeutung von &lt; und &gt; (bzw. &gt;&gt;) kollidiert. Also: Was hättest du verwendet, wenn du der Erfinder von C++ wärst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201674</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:22:46 GMT]]></title><description><![CDATA[<p>ich versteh' immer noch nicht, was gegen normale klammern sprechen sollte? sowas z.b:</p>
<pre><code>A(b((int)x));
</code></pre>
<p>rufe funktion 'b' auf mit argument 'x' zu int gecastet und mit dem rückgabewert werwende dann makro 'A'.<br />
ok, blödes beispiel, aber es geht doch auch, warum sollte das nicht mit templates möglich sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201686</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:30:40 GMT]]></title><description><![CDATA[<p>Weiß garnicht was ihr bzgl. &gt;&gt; bei Template-Parametern habt? Der &quot;Bug&quot; wurde doch für C++2009 schon behoben bzw. in den Working Draft aufgenommen und vom Komitee abgesegnet. UND der VC++ 2005 beachtet dieses C++2009-Feature bereits! (ausnahmsweise hängt VC++ nicht hinterher sondern kann schon, was noch kommt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201693</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:36:57 GMT]]></title><description><![CDATA[<p>Künstliches Produkt:</p>
<pre><code class="language-cpp">template &lt;class T&gt; struct t
{
	t(int i){a = i;}
	T a;
};

 template &lt;class N&gt; void fun(t&lt;N&gt; x)
{
	x.a = 12;
}

int main(int argc, char* argv[])
{
	long i;
	int y;
	fun(t&lt;int&gt;(12)); 
	return 0;
}
</code></pre>
<p>Daraus würde dann werden:</p>
<pre><code class="language-cpp">template (class T) struct t
{
	t(int i){a = i;}
	T a;
};

 template (class N) void fun(t&lt;N&gt; x)
{
	x.a = 12;
}

int main(int argc, char* argv[])
{
	long i;
	int y;
	fun(t(int)(12)); 	 // Wäre mir zu Komplex die Regelwelt

         return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1201698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201698</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:36:57 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:42:40 GMT]]></title><description><![CDATA[<p>Zum lesen sind die &lt;&gt; bei Templates auf jeden Fall besser als (). Das der Compiler das vielleicht verstehen könnte, heißt nicht, das ich als Mensch es besser lesen könnte. Schon alleine beim überfliegen des Codes fallen die &lt;&gt; eher auf und ich weiß: aha, da scheint was mit Templates zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201703</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 10:50:48 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Zum lesen sind die &lt;&gt; bei Templates auf jeden Fall besser als (). Das der Compiler das vielleicht verstehen könnte, heißt nicht, das ich als Mensch es besser lesen könnte. Schon alleine beim überfliegen des Codes fallen die &lt;&gt; eher auf und ich weiß: aha, da scheint was mit Templates zu sein.</p>
</blockquote>
<p>da habt ihr natürlich recht. also muss was anderes her, etwas, das gut lesbar ist und nicht als operator o.ä. missinterpretiert werden kann. irgendwie steckt in c++ doch noch viel potential für verbesserungen...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201715</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 03 Jan 2007 10:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to a=b-----c;? on Wed, 03 Jan 2007 12:15:00 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>In VB gibts dafür Runde Klammern und das Schlüsselwort Of, aber ob das besser/schöner ist wage ich zu bezweifeln</p>
</blockquote>
<p>&quot;Schöner&quot; auf jeden Fall. Allerdings nicht so konzise. Bei geschachtelten Template-Aufrufen erhält man einen riesig aufgeblähten Code, der nicht mehr gut lesbar ist.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Also: Was hättest du verwendet, wenn du der Erfinder von C++ wärst?</p>
</blockquote>
<p>Es gibt die Idee in einer C++-äquivalenten Sprache (Name vergessen), die Zeichen '&lt;[' und ']&gt;' zu verwenden. Vorteil: Die Grammatik wird eindeutig(er). Nachteil: Na, sieht halt furchtbar aus. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201813</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 03 Jan 2007 12:15:00 GMT</pubDate></item></channel></rss>