<?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[Cast von MAKRO nach int]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>in unserem Code muss ich oft sowas lesen:</p>
<pre><code class="language-cpp">#define NUMBER 4711

void doSomething( int iNumber );

doSomething( NUMBER);
</code></pre>
<p>Mir ist schon klar, dass das define mit const int erstetzt werden sollte. Allerdings habe ich eine Vorstellungsproblem.</p>
<p>Der Präprozesser erstetzt NUMBER mit 4711, aber von welchem Typ ist NUMBER? Was passiert wenn doSomething aufgerufen wird? Findet ein impliziter Cast statt?</p>
<p>Danke<br />
Lord Hong</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234960/cast-von-makro-nach-int</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 07:10:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234960.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Feb 2009 09:04:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 09:04:00 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>in unserem Code muss ich oft sowas lesen:</p>
<pre><code class="language-cpp">#define NUMBER 4711

void doSomething( int iNumber );

doSomething( NUMBER);
</code></pre>
<p>Mir ist schon klar, dass das define mit const int erstetzt werden sollte. Allerdings habe ich eine Vorstellungsproblem.</p>
<p>Der Präprozesser erstetzt NUMBER mit 4711, aber von welchem Typ ist NUMBER? Was passiert wenn doSomething aufgerufen wird? Findet ein impliziter Cast statt?</p>
<p>Danke<br />
Lord Hong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669175</guid><dc:creator><![CDATA[lord.hong]]></dc:creator><pubDate>Tue, 24 Feb 2009 09:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 09:05:53 GMT]]></title><description><![CDATA[<p>lord.hong schrieb:</p>
<blockquote>
<p>Der Präprozesser erstetzt NUMBER mit 4711, aber von welchem Typ ist NUMBER?</p>
</blockquote>
<p>Na, von welchem Typ ist 4711?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669177</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 24 Feb 2009 09:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 09:44:07 GMT]]></title><description><![CDATA[<p>normale sind zahlen sind immer int<br />
die können natürlich implizit gecastet werden</p>
<p>hängt an einer zahl ein punkt oder ein f F dann ist das double oder halt mit dem f ein float</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669203</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 24 Feb 2009 09:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 10:24:12 GMT]]></title><description><![CDATA[<p>Wo liegt dann genau der Unterschied zwischen diesen zwei Zeilen:</p>
<pre><code class="language-cpp">#define NUMBER 4711
const int NUMBER = 4711;
</code></pre>
<p>Soll das wirkilich identisch sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669217</guid><dc:creator><![CDATA[lord.hong]]></dc:creator><pubDate>Tue, 24 Feb 2009 10:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 10:28:46 GMT]]></title><description><![CDATA[<p>Beim #define sieht der Compiler von NUMBER nichts mehr. Der Compiler sieht, überall wo <strong>vor dem Präprozessorlauf</strong> NUMBER stand, nun ein Integerliteral mit dem Wert 4711.</p>
<p>Beim const int sieht der Compiler ein Symbol NUMBER, welches er (wegen dem const) bei jedem Auftauchen durch seinen Wert 4711 ersetzen darf (aber IMO nicht muss). Ein Unterschied ist z.B., dass man hier mit &amp;NUMBER eine Adresse nehmen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669219</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 24 Feb 2009 10:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:01:45 GMT]]></title><description><![CDATA[<p>lord.hong schrieb:</p>
<blockquote>
<p>Wo liegt dann genau der Unterschied zwischen diesen zwei Zeilen:</p>
<pre><code class="language-cpp">#define NUMBER 4711
const int NUMBER = 4711;
</code></pre>
<p>Soll das wirkilich identisch sein?</p>
</blockquote>
<p>Der Unterschied kommt erst richtig zur Geltung, wenn man sowas hat:</p>
<pre><code class="language-cpp">#define A 15
#define B 21
#define C (A + B)

doSomething(C); //wird  doSomething((15 + 21))

//-------

const int A = 15;
const int B = 21;
const int C = A + B; //wird zu 36

doSomething(C);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1669229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669229</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:15:20 GMT]]></title><description><![CDATA[<p>Gegenfrage: Von welchem Typ ist 42 hier:</p>
<pre><code>float ultimateAnswer = 42;
</code></pre>
<p>Na? Es spielt keine Rolle, da der Compiler schlau ist und die Variable mit 42 als float belegt. Noch ne Gegenfrage: Von welchem Typ sind 234, 1, 6 oder 13? Sind sie natuerliche Zahlen, ganze, gebrochene, reele oder gar komplexe? Sie sind alles! Deswegen ist die Frage nach dem Typ von Zahlen eine schlecht gestellte Frage. Variablen haben Typen, Zahlen im allgemeinen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669234</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:15:20 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:22:45 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Gegenfrage: Von welchem Typ ist 42 hier:</p>
<pre><code>float ultimateAnswer = 42;
</code></pre>
<p>Na? Es spielt keine Rolle, da der Compiler schlau ist und die Variable mit 42 als float belegt.</p>
</blockquote>
<p>Und mit einem int initialisiert.</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Noch ne Gegenfrage: Von welchem Typ sind 234, 1, 6 oder 13?</p>
</blockquote>
<p>int, und nichts anderes.</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Sind sie natuerliche Zahlen, ganze, gebrochene, reele oder gar komplexe? Sie sind alles! Deswegen ist die Frage nach dem Typ von Zahlen eine schlecht gestellte Frage. Variablen haben Typen, Zahlen im allgemeinen nicht.</p>
</blockquote>
<p>Doch, Zahlen haben unter C++ einen Typ, weswegen man auch Teilweise mit Typkürzeln arbeitet (z.B. 4ul für eine 4 des Types unsigned long...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669240</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:30:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Doch, Zahlen haben unter C++ einen Typ, weswegen man auch Teilweise mit Typkürzeln arbeitet (z.B. 4ul für eine 4 des Types unsigned long...).</p>
</blockquote>
<p>Da gebe ich den Typ expliziet an. Trotzdem ist es eine schlecht gestellte Frage, da der Compiler ueber die Verwendung der Zahl den Typ ableitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669243</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:34:44 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Trotzdem ist es eine schlecht gestellte Frage, da der Compiler ueber die Verwendung der Zahl den Typ ableitet.</p>
</blockquote>
<pre><code class="language-cpp">void f(int);
void f(double);
void f(char);

int main() {
  f(42);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1669247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669247</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:40:13 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21632">@knivil</a>:<br />
Schau Dir mal Kapitel 2.13 im C++-Standard an. Da steht ziemlich genau, welche Literale welchen Typen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669253</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:37:06 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>da der Compiler ueber die Verwendung der Zahl den Typ ableitet.</p>
</blockquote>
<p>Tut er nicht. Sonst ergäbe <code>float pi = 42 / 1337 * 100;</code> nicht 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669254</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:43:27 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Noch ne Gegenfrage: Von welchem Typ sind 234, 1, 6 oder 13? Sind sie natuerliche Zahlen, ganze, gebrochene, reele oder gar komplexe? Sie sind alles! Deswegen ist die Frage nach dem Typ von Zahlen eine schlecht gestellte Frage. Variablen haben Typen, Zahlen im allgemeinen nicht.</p>
</blockquote>
<p>Falsch, falsch, falsch!</p>
<pre><code class="language-cpp">void function(int value);
void function(short value);
void function(unsigned int value);

...

int main()
{
    function(25);
}
</code></pre>
<p>Na, welche Funktion wird hier wohl aufgerufen? <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="😕"
    /><br />
Antwort: Die mit int. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Weil eine Zahl, die keinem Typ zugewiesen ist, per default ein int ist und nicht &quot;alles&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><br />
<strong>Booyashaka!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669256</guid><dc:creator><![CDATA[I know it better]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 12:07:49 GMT]]></title><description><![CDATA[<p>I know it better schrieb:</p>
<blockquote>
<p>[...]Weil eine Zahl, die keinem Typ zugewiesen ist, per default ein int ist und nicht &quot;alles&quot;.[...]</p>
</blockquote>
<p>Das stimmt auch nicht.<br />
Was wird z.B. hierbei aufgerufen:</p>
<pre><code class="language-cpp">function(42.0);
</code></pre>
<p><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="😕"
    /><br />
Dabei hat die Zahl auch keinen Typen &quot;zugewiesen&quot;, und trotzdem ist es kein int.</p>
<p><em>Edit: komische Schreibfehler und eigene Blödheit</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669258</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 24 Feb 2009 12:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 11:55:50 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das hat die Zahl auch keinen Typen &quot;zugewiesen&quot;, und trotzdem ist es kein int.</p>
</blockquote>
<p>Ich bin mir gerade nicht sicher ob 42.0 double oder float, glaube aber ersteres ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669261</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 24 Feb 2009 11:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 12:01:37 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>I know it better schrieb:</p>
<blockquote>
<p>[...]Weil eine Zahl, die keinem Typ zugewiesen ist, per default ein int ist und nicht &quot;alles&quot;.[...]</p>
</blockquote>
<p>Das stimmt auch nicht.</p>
</blockquote>
<p>[...]Weil eine literale Zahl, die ohne Angabe eines Dezimalpunkts notiert ist, ohne Typpostfix automatisch ein int ist.</p>
<p>(Der Passus &quot;keinem Typ zugewiesen&quot; ist so auch mißverständlich. Durch die Zuweisung an eine Variable vom Typ != int ändert sich nämlich der Typ des Literals nicht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669262</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 24 Feb 2009 12:01:37 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 14:55:06 GMT]]></title><description><![CDATA[<p>lord.hong schrieb:</p>
<blockquote>
<p>Wo liegt dann genau der Unterschied zwischen diesen zwei Zeilen:</p>
<pre><code class="language-cpp">#define NUMBER 4711
const int NUMBER = 4711;
</code></pre>
<p>Soll das wirkilich identisch sein?</p>
</blockquote>
<p>Ein möglicher Unterschied ist folgendes (vorsicht, das Makro-Gefrickel wird nicht für zu Hause empfohlen ;))</p>
<pre><code class="language-cpp">#define NUMBER 4711

double foo4711();
double foo4712();

void bar()
{
  int i = NUMBER; //okay, das ginge auch mit const int NUMBER...
  float f = 0.34##NUMBER##f; //0.344711f !!
  double d = foo##NUMBER##(); //Aufruf von foo4711() 
}
</code></pre>
<p>Soll heißen: Makros sind wirklich nur reine Textersetzung die man sogar als Teilstrings von Variablennamen benutzen kann. Der Compiler sieht nichts davon, deshalb kannst du bei Makros auf Typsicherheit und sinnvolle Fehlermeldungen nicht zählen - einer der Hauptgründe weshalb sie soweit möglich gemieden werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669397</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 24 Feb 2009 14:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 15:00:25 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Beim #define sieht der Compiler von NUMBER nichts mehr. Der Compiler sieht, überall wo <strong>vor dem Präprozessorlauf</strong> NUMBER stand, nun ein Integerliteral mit dem Wert 4711.</p>
<p>Beim const int sieht der Compiler ein Symbol NUMBER, welches er (wegen dem const) bei jedem Auftauchen durch seinen Wert 4711 ersetzen darf (aber IMO nicht muss). Ein Unterschied ist z.B., dass man hier mit &amp;NUMBER eine Adresse nehmen kann.</p>
</blockquote>
<p>Danke, dass war mein Problem. Der Compiler sieht nur noch 4711, was er als int interpretiert - was in meinem Beispiel auch richtig ist.</p>
<p>Mit einem Postfix f</p>
<pre><code class="language-cpp">#define NUMBER 4711f
</code></pre>
<p>könnte ich den Typ float erzwingen oder einen implizieten cast vornehmen</p>
<pre><code class="language-cpp">#define NUMBER 4711
void doSomething( float fNumber);
doSomething( NUMBER );
doSomething( 4711 );
</code></pre>
<p>Nun ist mir klar, wie der Compiler den Typ herausfindet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669403</guid><dc:creator><![CDATA[lord.hong]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 15:06:18 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Soll heißen: Makros sind wirklich nur reine Textersetzung die man sogar als Teilstrings von Variablennamen benutzen kann. Der Compiler sieht nichts davon, deshalb kannst du bei Makros auf Typsicherheit und sinnvolle Fehlermeldungen nicht zählen - einer der Hauptgründe weshalb sie soweit möglich gemieden werden.</p>
</blockquote>
<p>Stimmt, wenn ich in einem Software-Team arbeiten würde, welches auf Typsicherheit wert legen würde. <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>Die Realität sieht leider anders 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>
<p>knivil schrieb:</p>
<blockquote>
<p>Gegenfrage: Von welchem Typ ist 42 hier:</p>
<pre><code>float ultimateAnswer = 42;
</code></pre>
<p>Na? Es spielt keine Rolle, da der Compiler schlau ist und die Variable mit 42 als float belegt. Noch ne Gegenfrage: Von welchem Typ sind 234, 1, 6 oder 13? Sind sie natuerliche Zahlen, ganze, gebrochene, reele oder gar komplexe? Sie sind alles! Deswegen ist die Frage nach dem Typ von Zahlen eine schlecht gestellte Frage. Variablen haben Typen, Zahlen im allgemeinen nicht.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1669408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669408</guid><dc:creator><![CDATA[lord.hong]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 15:17:06 GMT]]></title><description><![CDATA[<p>Viel bessere Fehler, warum man Makros nur mit grösster Vorsicht benutzen sollte:</p>
<pre><code class="language-cpp">enum Type
{
  NUMBER,
  TEXT,
  IMAGE,
  FILE
};
</code></pre>
<p>Tjo, das gibt einen äusserst seltsamen Kompilerfehler. Dem Präprozessor sind Scopes scheiss egal.</p>
<p>Und auch einen weit bekannten blöder Fehler, ist der folgende:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;limits&gt;

int main()
{
  std::numeric_limits&lt;int&gt;::max();

  return 0;
}
</code></pre>
<p><code>max</code> ist ein Makro in <code>windows.h</code> , was zu einem Fehler führt in diesem Code.</p>
<p>Übrigens, die integer und floating point Literale sind im Standard so definiert, dass der Compiler eine freie Wahl, mit den folgenden Regeln:</p>
<pre><code>Sufix              Decimal constant             Octal or hexadecimal constant
-------------------------------------------------------------------------------
none               int                          int
                   long int                     unsigned int
                                                long int
                                                unsigned long int
-------------------------------------------------------------------------------
u or U             unsigned int                 unsigned int
                   unsigned long int            unsigned long int
-------------------------------------------------------------------------------
l or L             long int                     long int
                                                unsigned long int
-------------------------------------------------------------------------------
Both u or U        unsigned long int            unsigned long int
and l or L         
-------------------------------------------------------------------------------

Floating Point:
1.
.0
1e1
1.e2
1.0e3
sind alles doubles.

Für float braucht es das Suffix f oder F:
1.f
.0f
1e1f
1.e2f
1.0e3f

Für long double braucht es das Suffix l oder L:
1.l
.0l
1e1l
1.e2l
1.0e3l
</code></pre>
<p>Ich hoffe ich habe jetzt nichts falsch abgeschrieben <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669421</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 15:26:02 GMT]]></title><description><![CDATA[<p>Naja, freie Wahl nun auch nicht. Die Regel ist IIRC mehr &quot;nimm das erste aus der Liste, wo die Zahl reinpasst.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669428</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to Cast von MAKRO nach int on Tue, 24 Feb 2009 16:50:59 GMT]]></title><description><![CDATA[<p>lord.hong schrieb:</p>
<blockquote>
<p>Stimmt, wenn ich in einem Software-Team arbeiten würde, welches auf Typsicherheit wert legen würde. <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>Die Realität sieht leider anders 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>Was nicht bedeuten muss dass du es ihnen nachmachen und auf Typsicherheit verzichten musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669487</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 24 Feb 2009 16:50:59 GMT</pubDate></item></channel></rss>