<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Variablenzuweisung &#8211; Teil 2</title>
	<atom:link href="http://et-tutorials.de/1226/variablenzuweisung-teil-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/</link>
	<description>Eletrotechnik verstehen durch Video Tutorials</description>
	<lastBuildDate>Sun, 13 May 2012 07:00:14 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Von: Wolfgang Bengfort</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-949</link>
		<dc:creator>Wolfgang Bengfort</dc:creator>
		<pubDate>Mon, 29 Nov 2010 07:10:45 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-949</guid>
		<description>Hallo Peter,
diese C-Knobelaufgaben können manchmal ganz schön gemein sein, und so verzweilfeln auch manche Compiler, obwohl die Programmierer der Compiler bei (einfachen) Zuweisungen sich eigentlich an ANSI halten sollten.
Diese Knobelaufgaben sind für einige vielleicht genau das richtige für die Adventszeit ;-)

Viele Grüße auch an Ihre Frau :-)

@Dieter,
Genau, dranbleiben ;-).
Die einzelnen Folgen sind per Email verschickt worden.
Ich habe sie aber auch unter folgendem Link der Reihe nach aufgelistet:
http://et-tutorials.de/mikrocontroller/</description>
		<content:encoded><![CDATA[<p>Hallo Peter,<br />
diese C-Knobelaufgaben können manchmal ganz schön gemein sein, und so verzweilfeln auch manche Compiler, obwohl die Programmierer der Compiler bei (einfachen) Zuweisungen sich eigentlich an ANSI halten sollten.<br />
Diese Knobelaufgaben sind für einige vielleicht genau das richtige für die Adventszeit <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Viele Grüße auch an Ihre Frau <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>@Dieter,<br />
Genau, dranbleiben <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<br />
Die einzelnen Folgen sind per Email verschickt worden.<br />
Ich habe sie aber auch unter folgendem Link der Reihe nach aufgelistet:<br />
<a href="http://et-tutorials.de/mikrocontroller/" rel="nofollow">http://et-tutorials.de/mikrocontroller/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Dieter</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-948</link>
		<dc:creator>Dieter</dc:creator>
		<pubDate>Mon, 29 Nov 2010 02:48:34 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-948</guid>
		<description>Hallo Peter und alle anderen,

Bei meinem IDE (IAR Embedded Workbench, Compiler?) erhalte ich 
- in der vorletzten Aufgabe 42 anstatt 41. Auch nach meinen Überlegungen müsste es 41 sein.
- Bei der letzten Aufgabe erhalte ich auch 56. 

Hallo Wolfgang, besten Dank für die Zusendung dieser Knobelaufgabe. Das hat mich mal wieder daran erinnert, dass ich eigentlich noch eine ganze Reihe Aufgaben lösen wollte. Ich muss wohl mal in meinem Postfach nachsehen. . . 

Grüsse aus Pforzheim
Dieter</description>
		<content:encoded><![CDATA[<p>Hallo Peter und alle anderen,</p>
<p>Bei meinem IDE (IAR Embedded Workbench, Compiler?) erhalte ich<br />
- in der vorletzten Aufgabe 42 anstatt 41. Auch nach meinen Überlegungen müsste es 41 sein.<br />
- Bei der letzten Aufgabe erhalte ich auch 56. </p>
<p>Hallo Wolfgang, besten Dank für die Zusendung dieser Knobelaufgabe. Das hat mich mal wieder daran erinnert, dass ich eigentlich noch eine ganze Reihe Aufgaben lösen wollte. Ich muss wohl mal in meinem Postfach nachsehen. . . </p>
<p>Grüsse aus Pforzheim<br />
Dieter</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Peter</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-947</link>
		<dc:creator>Peter</dc:creator>
		<pubDate>Sun, 28 Nov 2010 22:39:56 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-947</guid>
		<description>Hallo Herr Bengfort und alle Freunde dieser Seiten.

Erst einmal herzlichen Dank für den netten Kurs. Ich selbst bin seit mehr als 25 Jahre Programmierer und kann so den Stoff endlich mal meiner Frau erklären ;)

Anbei zur Belustigung eine nette kleine Aufgabe die ganze Scharen von C-Compilern zur Verzweiflung treiben, will sagen jeder Compiler liefert ein anderes Ergebnis nur nicht dass, was einem die Logik sagt, wenn man den Code mal im Kopf löst ;)

Nochmals herzlichen Dank und hier ist der ultrakurze Code zum Knobeln :


#include 

void main()
{
	int a=12;

	a+=++a+a++;

	printf(&quot;a ist gleich %i&quot;,a);
}

end


Jetzt kommt es:

Ich ändere ich den Ausdruck auf der rechten Seite nach:

	a=++a+a+++(++a)

Nach der obenstehenden Logik, sollte das Programm nun folgendes machen:

Durch das erste ++a (rechts des = Zuweisers) wird a-&gt;13, anschliessend
wieder mit sich selbst addiert, also 13+13, dann durch das a++ inkrementiert,
wie gehabt, also a=14, nun sollte es durch das ganz rechte (++a)
noch einmal inkrementiert werden, a also nun 15, anschliessend wieder
addiert zu werden, also 13+13+15=41.
Genau das spucken alle Compiler auch aus.

Merkwürdiges geschieht nun, wenn ich auf der linken Seite wieder das
+  hinzufüge. Also

        a+=++a+a+++(++a)

Nun sollte doch folgendes passieren:

Wieder wird a, vormals 12 durch das erste ++a -&gt; 13, dann wieder mit sich
selbst addiert, also 13+13, dann wieder inkrementiert, a wird 14, dann
nocheinmal durch das (++a) inkrementiert, wodurch ich nun 13+13+15=41,
so wie oben erhalte, dann mit a=15 dem linken a zugewiesen um
anschließend mit dem Ergebnis der Berechnung des Ausdrucks rechts,
addiert zu werden, also 41+15=56.

Als Ergebnis erwarte ich also 56.  

Wenn man das Proggi compiliert und laufen läßt, passieren
seltsame Dinge (je nach Compiler)...


Viel Spaß beim Knobeln und probieren.

Peter

P.S: Jemand hier dessen Compiler so kompiliert dass das Prg 56 ausgibt?</description>
		<content:encoded><![CDATA[<p>Hallo Herr Bengfort und alle Freunde dieser Seiten.</p>
<p>Erst einmal herzlichen Dank für den netten Kurs. Ich selbst bin seit mehr als 25 Jahre Programmierer und kann so den Stoff endlich mal meiner Frau erklären <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Anbei zur Belustigung eine nette kleine Aufgabe die ganze Scharen von C-Compilern zur Verzweiflung treiben, will sagen jeder Compiler liefert ein anderes Ergebnis nur nicht dass, was einem die Logik sagt, wenn man den Code mal im Kopf löst <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Nochmals herzlichen Dank und hier ist der ultrakurze Code zum Knobeln :</p>
<p>#include </p>
<p>void main()<br />
{<br />
	int a=12;</p>
<p>	a+=++a+a++;</p>
<p>	printf(&#8220;a ist gleich %i&#8221;,a);<br />
}</p>
<p>end</p>
<p>Jetzt kommt es:</p>
<p>Ich ändere ich den Ausdruck auf der rechten Seite nach:</p>
<p>	a=++a+a+++(++a)</p>
<p>Nach der obenstehenden Logik, sollte das Programm nun folgendes machen:</p>
<p>Durch das erste ++a (rechts des = Zuweisers) wird a-&gt;13, anschliessend<br />
wieder mit sich selbst addiert, also 13+13, dann durch das a++ inkrementiert,<br />
wie gehabt, also a=14, nun sollte es durch das ganz rechte (++a)<br />
noch einmal inkrementiert werden, a also nun 15, anschliessend wieder<br />
addiert zu werden, also 13+13+15=41.<br />
Genau das spucken alle Compiler auch aus.</p>
<p>Merkwürdiges geschieht nun, wenn ich auf der linken Seite wieder das<br />
+  hinzufüge. Also</p>
<p>        a+=++a+a+++(++a)</p>
<p>Nun sollte doch folgendes passieren:</p>
<p>Wieder wird a, vormals 12 durch das erste ++a -&gt; 13, dann wieder mit sich<br />
selbst addiert, also 13+13, dann wieder inkrementiert, a wird 14, dann<br />
nocheinmal durch das (++a) inkrementiert, wodurch ich nun 13+13+15=41,<br />
so wie oben erhalte, dann mit a=15 dem linken a zugewiesen um<br />
anschließend mit dem Ergebnis der Berechnung des Ausdrucks rechts,<br />
addiert zu werden, also 41+15=56.</p>
<p>Als Ergebnis erwarte ich also 56.  </p>
<p>Wenn man das Proggi compiliert und laufen läßt, passieren<br />
seltsame Dinge (je nach Compiler)&#8230;</p>
<p>Viel Spaß beim Knobeln und probieren.</p>
<p>Peter</p>
<p>P.S: Jemand hier dessen Compiler so kompiliert dass das Prg 56 ausgibt?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Wolfgang Bengfort</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-709</link>
		<dc:creator>Wolfgang Bengfort</dc:creator>
		<pubDate>Thu, 02 Sep 2010 12:37:15 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-709</guid>
		<description>Hallo Dieter,
das Vertauschen von i und j war sicher ein Tippfehler.
Das Formatieren in 5er Blöcken ist sicher eine gute Idee für gute Lesbarkeit.
Das ist auch die richtige Herangehensweise an dern Kurs. Wenn man eine Idee hat, Verbesserungsvorschläge hat der einfach etwas ausprobieren will - einfach machen!
Mit dem Simulationsprogramm ist das ja schön ohne großen Aufwand möglich.</description>
		<content:encoded><![CDATA[<p>Hallo Dieter,<br />
das Vertauschen von i und j war sicher ein Tippfehler.<br />
Das Formatieren in 5er Blöcken ist sicher eine gute Idee für gute Lesbarkeit.<br />
Das ist auch die richtige Herangehensweise an dern Kurs. Wenn man eine Idee hat, Verbesserungsvorschläge hat der einfach etwas ausprobieren will &#8211; einfach machen!<br />
Mit dem Simulationsprogramm ist das ja schön ohne großen Aufwand möglich.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Dieter</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-706</link>
		<dc:creator>Dieter</dc:creator>
		<pubDate>Wed, 01 Sep 2010 13:50:14 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-706</guid>
		<description>Das Beispiel von Neuling wäre gut, wenn er sich auf EINE Variable beschränken würde. So wird es ein Compiler-Fehler. Folgender Vorschlag zur übersichtlich strukturierten Darstellung in 5-er Blöcken, erfordert allerdings eine 2. Zeile:

int i=0;
  
  while(1) {
    printf(&quot;%d\n&quot;, i++%5);
    if (i%5==0) printf(&quot;\n&quot;);
  }</description>
		<content:encoded><![CDATA[<p>Das Beispiel von Neuling wäre gut, wenn er sich auf EINE Variable beschränken würde. So wird es ein Compiler-Fehler. Folgender Vorschlag zur übersichtlich strukturierten Darstellung in 5-er Blöcken, erfordert allerdings eine 2. Zeile:</p>
<p>int i=0;</p>
<p>  while(1) {<br />
    printf(&#8220;%d\n&#8221;, i++%5);<br />
    if (i%5==0) printf(&#8220;\n&#8221;);<br />
  }</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Neuling</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-326</link>
		<dc:creator>Neuling</dc:creator>
		<pubDate>Sat, 13 Mar 2010 05:05:23 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-326</guid>
		<description>Meins ist kürzer ;D
main...   int i;
while...  printf(&quot;%d\n&quot;,j++%5);</description>
		<content:encoded><![CDATA[<p>Meins ist kürzer ;D<br />
main&#8230;   int i;<br />
while&#8230;  printf(&#8220;%d\n&#8221;,j++%5);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Wolfgang Bengfort</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-231</link>
		<dc:creator>Wolfgang Bengfort</dc:creator>
		<pubDate>Mon, 15 Feb 2010 11:05:15 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-231</guid>
		<description>OK, bevor es morgen wieder eine neue Folge gibt, möchte ich gerne eine mögliche Lösung aufzeigen, die der von Heinrich sehe nahe kommt.

int i=0; // am Anfang von void main(void)
//
//
//
while(1){
printf(&quot; %d\n &quot;,i%5);
i++;
}

Eine gute Idee von Heinrich ist es sicher auch ein getchar() einzubauen. So kann man jeden Schritt einzeln sehen.

Bis morgen!

Wolfgang</description>
		<content:encoded><![CDATA[<p>OK, bevor es morgen wieder eine neue Folge gibt, möchte ich gerne eine mögliche Lösung aufzeigen, die der von Heinrich sehe nahe kommt.</p>
<p>int i=0; // am Anfang von void main(void)<br />
//<br />
//<br />
//<br />
while(1){<br />
printf(&#8221; %d\n &#8220;,i%5);<br />
i++;<br />
}</p>
<p>Eine gute Idee von Heinrich ist es sicher auch ein getchar() einzubauen. So kann man jeden Schritt einzeln sehen.</p>
<p>Bis morgen!</p>
<p>Wolfgang</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Wolfgang Bengfort</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-223</link>
		<dc:creator>Wolfgang Bengfort</dc:creator>
		<pubDate>Wed, 10 Feb 2010 20:41:38 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-223</guid>
		<description>Psst, nicht zu früh verraten ;-)
Sieht aber nicht schlecht aus.</description>
		<content:encoded><![CDATA[<p>Psst, nicht zu früh verraten <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Sieht aber nicht schlecht aus.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Häring Heinrich</title>
		<link>http://et-tutorials.de/1226/variablenzuweisung-teil-2/comment-page-1/#comment-221</link>
		<dc:creator>Häring Heinrich</dc:creator>
		<pubDate>Wed, 10 Feb 2010 18:11:31 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1226#comment-221</guid>
		<description>#include 
#include 
 main(){
int i=4; 
while(1){
   printf(&quot; %d\n &quot;,i%5,++i);       
    getchar();
}   
}
Ich hoffe diesmal alles richtig gemacht zu haben 
Heinrich.</description>
		<content:encoded><![CDATA[<p>#include<br />
#include<br />
 main(){<br />
int i=4;<br />
while(1){<br />
   printf(&#8221; %d\n &#8220;,i%5,++i);<br />
    getchar();<br />
}<br />
}<br />
Ich hoffe diesmal alles richtig gemacht zu haben<br />
Heinrich.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

