<?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[Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe demnächst eine Klausur in C++ Programmierung (Grundlagen).</p>
<p>Und ich kam bis jetzt auch gut voran. Nun stolpere ich nun doch bei den bitweisen Rechenoperatoren (&amp;, ^, |, &lt;&lt;, &gt;&gt;, ~) und der boolschen Algebra (&amp;&amp;, ||, !)</p>
<pre><code>#include &quot;stdafx.h&quot;
#define PRINT(int) printf(&quot;%d\n&quot;, int)
int _tmain(int argc, _TCHAR* argv[])

{
	int i = 2, n = 5;
	int m;
	PRINT(m = i &amp; n);  //Ergebnis=0, warum aber?
	PRINT(m = i | n);  //Ergebnis=7,
	PRINT(m = i ^ n);  //Ergebnis=7,
	PRINT(m = i &lt;&lt; n); //Ergebnis=64, hier hab ich völlig den Faden verloren
	PRINT(m = i &gt;&gt; n); //Ergebnis=0, da nicht teilbar?
	PRINT(m = ~i);     //Ergebnis=-3, wird hier die zahl in binär umgewandelt und davon der Komplement gebildet?
	PRINT(m = i &amp;&amp; n); //Ergebnis=1, boolsche Ergebnisse können soweit ich das mitbekommen habe nur eine 1 oder 0 ausgeben, oder? Sozusagen sind i und n beide nicht 0 und daher wird das Ergebnis true (1). Ist das richtig so?
	PRINT(m = i || n); //Ergebnis=1, denke so wie beim &amp;&amp;. wenn min einer von beiden variablen nicht 0 ist gibt es eine true Meldung

	getch();
	return 0;
}
</code></pre>
<p>Das war das Beispiel womit ich jetzt rumprobiert und versucht habe das Thema zu verstehen.</p>
<p>Meine Übungsaufgabe ist die folgende:</p>
<pre><code>#include &quot;stdafx.h&quot;
#define PRINT(int) printf(&quot;int = %d\n&quot;, int)

int _tmain(int argc, _TCHAR* argv[])
{
	int x, y, z;
	x = 03; y = 02; z = 01;
	PRINT( x | y &amp; z ); //(6a)
	PRINT( x | y &amp; ~ z ); //(6b)
	PRINT( x ^ y &amp; ~ z ); //(6c)
	PRINT( x &amp; y &amp;&amp; z ); //(6d)
	x = 1; y = -1;
	PRINT( ! x | x ); //(6e)
	PRINT( ~ x | x ); //(6f)
	PRINT( x ^ x ); //(6g)
	x &lt;&lt;= 3; PRINT(x); //(6h)
	y &lt;&lt;= 3; PRINT(y); //(6i)
	y &gt;&gt;= 3; PRINT(y); //(6j)
	getch();
	return 0;
}
</code></pre>
<p>Leider spuckt mir mein Compiler eine Fehlermeldung &quot;fatal error LNK1169: one or more multiply defined symbols found&quot; und ich weiß nicht wie ich diese lösen kann. Außerdem weiß ich nicht genau welche Rechenoperationen hier durchgeführt wurden. Ich kann diese Rechnereien nicht nachvollziehen.</p>
<p>Kann mir einer von euch Pros bitte helfen und erklären wie diese Zusammenhänge funktionieren. Ich muss das bis zur Klausur unbedingt verstehen.</p>
<p>Vielen Dank!!</p>
<p>Grüße</p>
<p>borsalino</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323394/brauche-hilfe-bei-bitweise-operatoren-amp-boolsche-operatoren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 03:42:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323394.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jan 2014 13:39:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 13:39:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe demnächst eine Klausur in C++ Programmierung (Grundlagen).</p>
<p>Und ich kam bis jetzt auch gut voran. Nun stolpere ich nun doch bei den bitweisen Rechenoperatoren (&amp;, ^, |, &lt;&lt;, &gt;&gt;, ~) und der boolschen Algebra (&amp;&amp;, ||, !)</p>
<pre><code>#include &quot;stdafx.h&quot;
#define PRINT(int) printf(&quot;%d\n&quot;, int)
int _tmain(int argc, _TCHAR* argv[])

{
	int i = 2, n = 5;
	int m;
	PRINT(m = i &amp; n);  //Ergebnis=0, warum aber?
	PRINT(m = i | n);  //Ergebnis=7,
	PRINT(m = i ^ n);  //Ergebnis=7,
	PRINT(m = i &lt;&lt; n); //Ergebnis=64, hier hab ich völlig den Faden verloren
	PRINT(m = i &gt;&gt; n); //Ergebnis=0, da nicht teilbar?
	PRINT(m = ~i);     //Ergebnis=-3, wird hier die zahl in binär umgewandelt und davon der Komplement gebildet?
	PRINT(m = i &amp;&amp; n); //Ergebnis=1, boolsche Ergebnisse können soweit ich das mitbekommen habe nur eine 1 oder 0 ausgeben, oder? Sozusagen sind i und n beide nicht 0 und daher wird das Ergebnis true (1). Ist das richtig so?
	PRINT(m = i || n); //Ergebnis=1, denke so wie beim &amp;&amp;. wenn min einer von beiden variablen nicht 0 ist gibt es eine true Meldung

	getch();
	return 0;
}
</code></pre>
<p>Das war das Beispiel womit ich jetzt rumprobiert und versucht habe das Thema zu verstehen.</p>
<p>Meine Übungsaufgabe ist die folgende:</p>
<pre><code>#include &quot;stdafx.h&quot;
#define PRINT(int) printf(&quot;int = %d\n&quot;, int)

int _tmain(int argc, _TCHAR* argv[])
{
	int x, y, z;
	x = 03; y = 02; z = 01;
	PRINT( x | y &amp; z ); //(6a)
	PRINT( x | y &amp; ~ z ); //(6b)
	PRINT( x ^ y &amp; ~ z ); //(6c)
	PRINT( x &amp; y &amp;&amp; z ); //(6d)
	x = 1; y = -1;
	PRINT( ! x | x ); //(6e)
	PRINT( ~ x | x ); //(6f)
	PRINT( x ^ x ); //(6g)
	x &lt;&lt;= 3; PRINT(x); //(6h)
	y &lt;&lt;= 3; PRINT(y); //(6i)
	y &gt;&gt;= 3; PRINT(y); //(6j)
	getch();
	return 0;
}
</code></pre>
<p>Leider spuckt mir mein Compiler eine Fehlermeldung &quot;fatal error LNK1169: one or more multiply defined symbols found&quot; und ich weiß nicht wie ich diese lösen kann. Außerdem weiß ich nicht genau welche Rechenoperationen hier durchgeführt wurden. Ich kann diese Rechnereien nicht nachvollziehen.</p>
<p>Kann mir einer von euch Pros bitte helfen und erklären wie diese Zusammenhänge funktionieren. Ich muss das bis zur Klausur unbedingt verstehen.</p>
<p>Vielen Dank!!</p>
<p>Grüße</p>
<p>borsalino</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380162</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 13:47:16 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<pre><code>#define PRINT(int) printf(&quot;%d\n&quot;, int)
</code></pre>
</blockquote>
<p>LOL, darf ich fragen wo du &quot;c++ lernst&quot;?</p>
<p>i = 2 = 0000 0010 (bin)<br />
n = 5 = 0000 0101 (bin)</p>
<p>i &amp; n = 0000 0000 (bin), ein bit ist nur 1 wenn diese stelle in n UND in i 1 ist</p>
<p>i &lt;&lt; n = 0000 0010 &lt;&lt; 5 = 0100 0000 (bin), alles wurde um 5 stellen nach links geschoben<br />
damit erklärt sich &gt;&gt; von selbst. es ist analog, nur in die andere richtung.</p>
<p>~i = ... 1111 1101 (bin), das ergebnis als dezimalzahl ist afaik implementierungabhängig, hier sieht es nach zweierkomplement aus, ja.</p>
<p>bei &amp;&amp;, || und ! werden die operanden (die werte links und rechts) erstmal in bools konvertiert. wie werden integrale typen in bools konvertiert? genau: 0 = false, alles andere = true.</p>
<p>sorry, den zweiten code kommentiere ich nicht. ist mir zu unleserlich. jedenfalls ist das aber eine linker-meldung, keine compiler-meldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380171</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:06:49 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>borsalino schrieb:</p>
<blockquote>
<pre><code>#define PRINT(int) printf(&quot;%d\n&quot;, int)
</code></pre>
</blockquote>
<p>LOL, darf ich fragen wo du &quot;c++ lernst&quot;?</p>
</blockquote>
<p>FH Dortmund. Bin aber im Fachbereich Elektrotechnik, daher &quot;Grundlagen&quot;. Ist die Zeile Code die du da zitierst so nicht in Ordnung? Sie ist vom Prof und zieht sich durch die ganzen Übungen altklausuren so durch.</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>i &amp; n = 0000 0000 (bin), ein bit ist nur 1 wenn diese stelle in n UND in i 1 ist</p>
</blockquote>
<p>Ich glaub ich verstehe. Kann das Ergbnis mehr als 1 sein? Also dann z.B 1110 0011, 0011 1001 = 0010 0001 = 33 ?</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>i &lt;&lt; n = 0000 0010 &lt;&lt; 5 = 0100 0000 (bin), alles wurde um 5 stellen nach links geschoben</p>
</blockquote>
<p>verstehe! Aber was passiert mit 0100 0110 ? Werden die drei 1 jeweils 5 nach links verschoben?</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>~i = ... 1111 1101 (bin), das ergebnis als dezimalzahl ist afaik implementierungabhängig, hier sieht es nach zweierkomplement aus, ja.</p>
</blockquote>
<p>Da dran muss ich wohl noch sitzen...</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>bei &amp;&amp;, || und ! werden die operanden (die werte links und rechts) erstmal in bools konvertiert. wie werden integrale typen in bools konvertiert? genau: 0 = false, alles andere = true.</p>
</blockquote>
<p>Also wie ich es mir dachte. Das Ergbnis kann nur einen true (1) oder false (0) Wert ausgeben.</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>sorry, den zweiten code kommentiere ich nicht. ist mir zu unleserlich. jedenfalls ist das aber eine linker-meldung, keine compiler-meldung.</p>
</blockquote>
<p>Das ist der Code einer offiziellen Übungsaufgabe vom Prof. Die anderen Übungen sowie Klasuren sehen alle so aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380176</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:09:52 GMT]]></title><description><![CDATA[<p>Sagt den der <strong>Linker</strong> nicht, welche Symbole doppelt definiert wurden? Wir können da doch nur raten unhd wären somit keine Hilfe.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380177</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:14:47 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>borsalino schrieb:</p>
<blockquote>
<pre><code>#define PRINT(int) printf(&quot;%d\n&quot;, int)
</code></pre>
</blockquote>
<p>LOL, darf ich fragen wo du &quot;c++ lernst&quot;?</p>
</blockquote>
<p>FH Dortmund. Bin aber im Fachbereich Elektrotechnik, daher &quot;Grundlagen&quot;. Ist die Zeile Code die du da zitierst so nicht in Ordnung? Sie ist vom Prof und zieht sich durch die ganzen Übungen altklausuren so durch.</p>
</blockquote>
<p>1. ist das C und nicht C++. Ist zwar in C++ erlaubt, aber eben nicht C++.<br />
2. Was noch viel schlimmer ist. Schlüsselworte sollten nicht in Bezeichner benutzt werden, auch wenn es beim Preprozessor noch erlaubt sein mag.<br />
3. Der Hammer aber: Das Makro erzeugt falsche Ausgaben, wenn statt 'nem int was anderes übergeben wurde. Sowas programmieren nur Amateure.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380179</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:14:47 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:19:05 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>borsalino schrieb:</p>
<blockquote>
<pre><code>#define PRINT(int) printf(&quot;%d\n&quot;, int)
</code></pre>
</blockquote>
<p>LOL, darf ich fragen wo du &quot;c++ lernst&quot;?</p>
</blockquote>
<p>FH Dortmund. Bin aber im Fachbereich Elektrotechnik, daher &quot;Grundlagen&quot;. Ist die Zeile Code die du da zitierst so nicht in Ordnung? Sie ist vom Prof und zieht sich durch die ganzen Übungen altklausuren so durch.</p>
</blockquote>
<p>nein, das ist bullshit, sorry.<br />
1. wieso makro? was soll das bezwecken?<br />
2. wieso printf? c++' std::cout ist typensicher und somit besser.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>i &amp; n = 0000 0000 (bin), ein bit ist nur 1 wenn diese stelle in n UND in i 1 ist</p>
</blockquote>
<p>Ich glaub ich verstehe. Kann das Ergbnis mehr als 1 sein? Also dann z.B 1110 0011, 0011 1001 = 0010 0001 = 33 ?</p>
</blockquote>
<p>exakt.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>i &lt;&lt; n = 0000 0010 &lt;&lt; 5 = 0100 0000 (bin), alles wurde um 5 stellen nach links geschoben</p>
</blockquote>
<p>verstehe! Aber was passiert mit 0100 0110 ? Werden die drei 1 jeweils 5 nach links verschoben?</p>
</blockquote>
<p>naja ein int hat per definition mindestens 16 bit. sollte man aber soweit schieben dass sie sogar aus dem bereich fallen, dann sind sie einfach weg. wenn du sie nach rechts schiebst, dann sind sie sofort weg.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>~i = ... 1111 1101 (bin), das ergebnis als dezimalzahl ist afaik implementierungabhängig, hier sieht es nach zweierkomplement aus, ja.</p>
</blockquote>
<p>Da dran muss ich wohl noch sitzen...</p>
</blockquote>
<p>die bitweise negation von integralen signed typen hab ich noch NIE gebraucht. keine ahnung wieso das abgefragt wird.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>bei &amp;&amp;, || und ! werden die operanden (die werte links und rechts) erstmal in bools konvertiert. wie werden integrale typen in bools konvertiert? genau: 0 = false, alles andere = true.</p>
</blockquote>
<p>Also wie ich es mir dachte. Das Ergbnis kann nur einen true (1) oder false (0) Wert ausgeben.</p>
</blockquote>
<p>ja.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>sorry, den zweiten code kommentiere ich nicht. ist mir zu unleserlich. jedenfalls ist das aber eine linker-meldung, keine compiler-meldung.</p>
</blockquote>
<p>Das ist der Code einer offiziellen Übungsaufgabe vom Prof. Die anderen Übungen sowie Klasuren sehen alle so aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
</blockquote>
<p>mein beileid.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380180</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:25:34 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Sagt den der <strong>Linker</strong> nicht, welche Symbole doppelt definiert wurden? Wir können da doch nur raten unhd wären somit keine Hilfe.</p>
<p>mfg Martin</p>
</blockquote>
<p>Das ist die komplette Meldung</p>
<pre><code>------ Erstellen gestartet: Projekt: lima, Konfiguration: Debug Win32 ------
Verknüpfen...
test2.obj : error LNK2005: _wmain already defined in lima.obj
C:\Users\Light tank\Documents\Visual Studio 2005\Projects\lima\Debug\lima.exe : fatal error LNK1169: one or more multiply defined symbols found
Das Buildprotokoll wurde unter &quot;file://c:\Users\Light tank\Documents\Visual Studio 2005\Projects\lima\lima\Debug\BuildLog.htm&quot; gespeichert.
lima - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
</code></pre>
<p>Ich benutze Visual C++ 2005 Express Edition, da der Prof den in den Übungen benutzt.</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>1. ist das C und nicht C++. Ist zwar in C++ erlaubt, aber eben nicht C++.<br />
2. Was noch viel schlimmer ist. Schlüsselworte sollten nicht in Bezeichner benutzt werden, auch wenn es beim Preprozessor noch erlaubt sein mag.<br />
3. Der Hammer aber: Das Makro erzeugt falsche Ausgaben, wenn statt 'nem int was anderes übergeben wurde. Sowas programmieren nur Amateure.</p>
</blockquote>
<p>Das erklärt vielleicht auch warum ich die Übungen so nicht verstanden habe... Mhh muss ich halt durch.</p>
<p>Könnt ihr mir kurz diese beiden Zeilen erklären:</p>
<p>PRINT(m = i | n); //Ergebnis=7,<br />
PRINT(m = i ^ n); //Ergebnis=7,</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380186</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:25:34 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:29:36 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>Könnt ihr mir kurz diese beiden Zeilen erklären:</p>
<p>PRINT(m = i | n); //Ergebnis=7,<br />
PRINT(m = i ^ n); //Ergebnis=7,</p>
<p>Grüße</p>
</blockquote>
<p>stell dir die beiden variable wieder als binärmuster vor:<br />
i = 2 = 0000 0010 (bin)<br />
n = 5 = 0000 0101 (bin)</p>
<p>| bedeutet bitweise-oder<br />
i | n = 0000 0111 (bin), im ergebnis ist das bit dann 1, wenn es in i ODER in n 1 ist.</p>
<p>^ bedeutet biweise-exklusiv-oder<br />
i ^ n = 0000 0111 (bin), im ergebnis ist das bit dann 1, wenn es in i Oder in n 1 ist, nicht aber wenn es in beiden 1 ist.<br />
also:<br />
0^0 = 0<br />
1^0 = 1<br />
0^1 = 1<br />
1^1 = 0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380187</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:38:04 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>Das ist die komplette Meldung</p>
<pre><code>------ Erstellen gestartet: Projekt: lima, Konfiguration: Debug Win32 ------
Verknüpfen...
test2.obj : error LNK2005: _wmain already defined in lima.obj
C:\Users\Light tank\Documents\Visual Studio 2005\Projects\lima\Debug\lima.exe : fatal error LNK1169: one or more multiply defined symbols found
Das Buildprotokoll wurde unter &quot;file://c:\Users\Light tank\Documents\Visual Studio 2005\Projects\lima\lima\Debug\BuildLog.htm&quot; gespeichert.
lima - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
</code></pre>
<p>Ich benutze Visual C++ 2005 Express Edition, da der Prof den in den Übungen benutzt.</p>
</blockquote>
<p>Ich nehme mal an, daß lima.cpp und test2.cpp jeweils der Quelltext eines Programmes ist und in beiden eine Mainfunktion definiert wurde. Erstelle für test2.cpp ein eigenes Projekt und linke es nicht zusammen mit lima.cpp. Wenn ich falsch liege, dann entferne eine von beiden Definitionen.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380191</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:40:45 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>stell dir die beiden variable wieder als binärmuster vor:<br />
i = 2 = 0000 0010 (bin)<br />
n = 5 = 0000 0101 (bin)</p>
<p>| bedeutet bitweise-oder<br />
i | n = 0000 0111 (bin), im ergebnis ist das bit dann 1, wenn es in i ODER in n 1 ist.</p>
</blockquote>
<p>wenn i= 1010 1010, n = 0101 0101, dann ist i | n = 1111 1111 ?</p>
<p>asfdlol schrieb:</p>
<blockquote>
<p>^ bedeutet biweise-exklusiv-oder<br />
i ^ n = 0000 0111 (bin), im ergebnis ist das bit dann 1, wenn es in i Oder in n 1 ist, nicht aber wenn es in beiden 1 ist.<br />
also:<br />
0^0 = 0<br />
1^0 = 1<br />
0^1 = 1<br />
1^1 = 0</p>
</blockquote>
<p>ok auch verstanden!</p>
<p>Zu den Shift Operatoren:</p>
<p>wenn i=2, n=50 per integer definiert sind.</p>
<p>was passiert dann mit i &lt;&lt; n? Ergebnis: 524288</p>
<p>Wenn ich also die 2 (was ja in binär 2^1 entspricht) 50 stellen nach links verschiebe habe ich ja eigentlich 2^51, was aber nicht als Ergebnis stimmen kann. Was mach ich falsch?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380193</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:42:57 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>stell dir die beiden variable wieder als binärmuster vor:<br />
i = 2 = 0000 0010 (bin)<br />
n = 5 = 0000 0101 (bin)</p>
<p>| bedeutet bitweise-oder<br />
i | n = 0000 0111 (bin), im ergebnis ist das bit dann 1, wenn es in i ODER in n 1 ist.</p>
</blockquote>
<p>wenn i= 1010 1010, n = 0101 0101, dann ist i | n = 1111 1111 ?</p>
</blockquote>
<p>genau.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>Zu den Shift Operatoren:</p>
<p>wenn i=2, n=50 per integer definiert sind.</p>
<p>was passiert dann mit i &lt;&lt; n? Ergebnis: 524288</p>
<p>Wenn ich also die 2 (was ja in binär 2^1 entspricht) 50 stellen nach links verschiebe habe ich ja eigentlich 2^51, was aber nicht als Ergebnis stimmen kann. Was mach ich falsch?</p>
<p>Grüße</p>
</blockquote>
<p>der wert auf der rhs bei den shift- und shift-assign-operatoren darf nicht grösser sein als die anzahl bit des typs der lhs. wenn doch, dann hast du ub.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380194</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:48:12 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Ich nehme mal an, daß lima.cpp und test2.cpp jeweils der Quelltext eines Programmes ist und in beiden eine Mainfunktion definiert wurde. Erstelle für test2.cpp ein eigenes Projekt und linke es nicht zusammen mit lima.cpp. Wenn ich falsch liege, dann entferne eine von beiden Definitionen.</p>
<p>mfg Martin</p>
</blockquote>
<p>habe bei der test2.cpp int main() statt int _tmain(int argc, _TCHAR* argv[]) eingefügt und es funktioniert. Die lima.cpp habe ich so belassen. Danke!</p>
<p>Wir ihr seht habe ich die grundlegenden Dinge in C++ nicht drauf. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380197</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:48:12 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:51:10 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>der wert auf der rhs bei den shift- und shift-assign-operatoren darf nicht grösser sein als die anzahl bit des typs der lhs. wenn doch, dann hast du ub.</p>
</blockquote>
<p>Kannst du mir das bitte etwas ausführlicher erklären und ohne Abkürzungen? bin schon ganz durcheinander <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380198</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 14:52:54 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>der wert auf der rhs bei den shift- und shift-assign-operatoren darf nicht grösser sein als die anzahl bit des typs der lhs. wenn doch, dann hast du ub.</p>
</blockquote>
<p>Kannst du mir das bitte etwas ausführlicher erklären und ohne Abkürzungen? bin schon ganz durcheinander <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Gruß</p>
</blockquote>
<p>lhs = left hand side<br />
rhs = right hand side<br />
ub = undefined behaviour</p>
<p>was ich damit sagen wollte:<br />
wenn du x &lt;&lt; y oder x &gt;&gt; y schreibst, dann muss y kleiner sein als x bits hat. wenn x ein int ist und auf deinem system 32 bit hat, dann muss y &lt; 32 sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380199</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 15:03:59 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>lhs = left hand side<br />
rhs = right hand side<br />
ub = undefined behaviour</p>
<p>was ich damit sagen wollte:<br />
wenn du x &lt;&lt; y oder x &gt;&gt; y schreibst, dann muss y kleiner sein als x bits hat. wenn x ein int ist und auf deinem system 32 bit hat, dann muss y &lt; 32 sein.</p>
</blockquote>
<p>Ok verstehe. y muss also immer kleiner sein als die anzahl der bits von x.</p>
<p>Nun in meinem Beispiel war &quot;y&quot; ja viel größer (50) als x (2). Und ich bin auf einem Win7 32bit System.</p>
<p>Wieso hat das Programm dennoch ein Ergebnis ausgespuckt und wieso? Wieso nichgt 0? Was kann ich mir unter dem undefined behaviour vorstellen?</p>
<p>Vielen Dank für die Geduld mit mir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380203</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:03:59 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 15:09:30 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>Wieso hat das Programm dennoch ein Ergebnis ausgespuckt und wieso? Wieso nichgt 0?</p>
</blockquote>
<p>das war zufall. das programm hätte auch 0 ausgeben können oder theoretisch auch die festplatte formatieren dürfen. du hast etwas gemacht was nicht erlaubt ist sondern ub hervorruft. was dann passiert während das programm ausgeführt wird kann dir keiner sagen. wie gesagt, zufall.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>Was kann ich mir unter dem undefined behaviour vorstellen?</p>
</blockquote>
<p>genau so. unvorhersehbare, undurchschaubare und undeterministische resultate / vorgänge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380205</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 15:18:04 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>das war zufall. das programm hätte auch 0 ausgeben können oder theoretisch auch die festplatte formatieren dürfen. du hast etwas gemacht was nicht erlaubt ist sondern ub hervorruft. was dann passiert während das programm ausgeführt wird kann dir keiner sagen. wie gesagt, zufall.</p>
<p>borsalino schrieb:</p>
<blockquote>
<p>Was kann ich mir unter dem undefined behaviour vorstellen?</p>
</blockquote>
<p>genau so. unvorhersehbare, undurchschaubare und undeterministische resultate / vorgänge.</p>
</blockquote>
<p>Ok ich hab fast alles was ich wissen wollte. Schonmal vielen Dank, dass du dir die Zeit &amp; Mühe auf dir genommen hast mir das zu erklären.</p>
<p>Ein kleine Frage noch zu den Shift Operatoren bevor du dich von mir genervt fühlst: Wenn das Ergebnis zufällig ist, da sie unvorhersehbar sind, wieso kommt immer das selbe Ergebnis beim Ausführen des Programms? Müsste da nicht jedesmal eine andere Zahl da stehen?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380207</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 15:24:42 GMT]]></title><description><![CDATA[<p>borsalino schrieb:</p>
<blockquote>
<p>Ein kleine Frage noch zu den Shift Operatoren bevor du dich von mir genervt fühlst: Wenn das Ergebnis zufällig ist, da sie unvorhersehbar sind, wieso kommt immer das selbe Ergebnis beim Ausführen des Programms? Müsste da nicht jedesmal eine andere Zahl da stehen?</p>
</blockquote>
<p>dann ist es eben zufall, dass jedesmal das selbe (falsche) rauskommt. darauf verlassen darfst du dich dennoch nicht. mit den shift-operatoren alleine hat dies aber wenig zu tun. es gibt auch sonst undefiniertes verhalten in c++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380210</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei bitweise Operatoren &amp;amp; boolsche Operatoren on Tue, 28 Jan 2014 15:25:45 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>borsalino schrieb:</p>
<blockquote>
<p>Ein kleine Frage noch zu den Shift Operatoren bevor du dich von mir genervt fühlst: Wenn das Ergebnis zufällig ist, da sie unvorhersehbar sind, wieso kommt immer das selbe Ergebnis beim Ausführen des Programms? Müsste da nicht jedesmal eine andere Zahl da stehen?</p>
</blockquote>
<p>dann ist es eben zufall, dass jedesmal das selbe (falsche) rauskommt. darauf verlassen darfst du dich dennoch nicht. mit den shift-operatoren alleine hat dies aber wenig zu tun. es gibt auch sonst undefiniertes verhalten in c++.</p>
</blockquote>
<p>Ok, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380211</guid><dc:creator><![CDATA[borsalino]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:25:45 GMT</pubDate></item></channel></rss>