<?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[kein sizeof() in der if-Abfrage?]]></title><description><![CDATA[<p>Hallo,</p>
<p>könnte mir jmd erklären, warum das nicht funktioniert? Wenn die if-Abfrage false ist, führt er die Anweisung trotzdem aus.</p>
<pre><code>char cc[10] = {0};

if(2 - sizeof(cc) &gt;= 0)  // müsste ja 2 - 10, d.h. -8 &gt;= 0, also false sein. Er geht trotzdem rein
    int fsf = 0;
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302587/kein-sizeof-in-der-if-abfrage</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 06:50:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302587.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Apr 2012 17:35:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:35:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>könnte mir jmd erklären, warum das nicht funktioniert? Wenn die if-Abfrage false ist, führt er die Anweisung trotzdem aus.</p>
<pre><code>char cc[10] = {0};

if(2 - sizeof(cc) &gt;= 0)  // müsste ja 2 - 10, d.h. -8 &gt;= 0, also false sein. Er geht trotzdem rein
    int fsf = 0;
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204548</guid><dc:creator><![CDATA[comp]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:39:23 GMT]]></title><description><![CDATA[<p>Welcher Compiler? Alle Warnungen angeschaltet? Warnung beachtet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204551</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:46:23 GMT]]></title><description><![CDATA[<p>Bei mir funktioniert es korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204554</guid><dc:creator><![CDATA[sizeof]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:50:58 GMT]]></title><description><![CDATA[<p>Dein <code>int fsf = 0;</code> tut nichts. Woher weißt Du, daß &quot;er&quot; das trotzdem ausführt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204556</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:50:58 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:56:41 GMT]]></title><description><![CDATA[<p>Der Typ des Ausdrucks &quot;2 - sizeof(bar)&quot; ist unsigned int, daher verhält sich das anders als du erwartest. <a href="http://ideone.com/ki30d" rel="nofollow">http://ideone.com/ki30d</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204558</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 17:57:31 GMT]]></title><description><![CDATA[<p>Das Verhalten ist schon korrekt so - unsigned int hat bei den üblichen arithmetischen Umwandlungen einen höheren Rang als int.</p>
<p>Glücklicherweise gibt es eine einfache Lösung dafür:</p>
<pre><code class="language-cpp">if(2 &gt;= sizeof(cc)) {
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2204559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204559</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 22 Apr 2012 17:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 18:09:07 GMT]]></title><description><![CDATA[<p>super<br />
vielen dank euch</p>
<p>aber irgendwie versteh ich das nur so halb mit dem unsigned und signed int warum das andere nicht funktioniert.<br />
ist 2 unsigned? *frag doof*</p>
<p>beide werte sind doch im plusbereich...</p>
<p>Wäre super, wenn jmd mir das nochmal kurz erklären könnte.</p>
<p>P.S. MIt einem Debugger kann man gut sehen, ob die Anweisung ausgeführt wird.<br />
Die Anweisung int fsf = 0; ist natürlich nur hier zur Anschauung und Verkürzung meiner eigentlicher Anweisung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204562</guid><dc:creator><![CDATA[comput]]></dc:creator><pubDate>Sun, 22 Apr 2012 18:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 18:14:08 GMT]]></title><description><![CDATA[<p>Lies das:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/3t4w2bkb.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/3t4w2bkb.aspx</a></p>
<p>grundsätzlich ist, wenn zwei Integer miteinander verrechnet werden und einer davon unsigned ist (wie sizeof(cc)), das Ergebnis der Berechnung ebenfalls unsigned und kann deshalb nicht kleiner als Null werden. Gerechnet wird dann Modulo 2^Breite des Ergebnistyps^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204564</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 22 Apr 2012 18:14:08 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 18:15:15 GMT]]></title><description><![CDATA[<p>Der Ausdruck '2' dürfte erst mal den Typ int haben. Aber der Ausdruck sizeof(x) hat den Typ size_t, und der ist unsigned. Und wenn ein signed und ein unsigned Typ miteinander Arithmetik betreiben wollen, müssen sie sich auf eins einigen. Und das ist unsigned. <a href="http://ideone.com/DAPpX" rel="nofollow">http://ideone.com/DAPpX</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204565</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 22 Apr 2012 18:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to kein sizeof() in der if-Abfrage? on Sun, 22 Apr 2012 18:17:08 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Lies das:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/3t4w2bkb.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/3t4w2bkb.aspx</a></p>
<p>grundsätzlich ist, wenn zwei Integer miteinander verrechnet werden und einer davon unsigned ist (wie sizeof(cc)), das Ergebnis der Berechnung ebenfalls unsigned und kann deshalb nicht kleiner als Null werden. Gerechnet wird dann Modulo 2^Breite des Ergebnistyps^.</p>
</blockquote>
<p>klasse</p>
<p>vielen dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2204566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2204566</guid><dc:creator><![CDATA[comput]]></dc:creator><pubDate>Sun, 22 Apr 2012 18:17:08 GMT</pubDate></item></channel></rss>