<?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[Richtiges Casten von unsigned long long]]></title><description><![CDATA[<p>Hallo</p>
<p>Verwende unsigned 64 Bit Integers und suche nach der korrekten Typdefinition und dem korrekten Casting:</p>
<pre><code class="language-cpp">// Typdefinition 1
typedef unsigned __int64 bitboard_tt;
</code></pre>
<pre><code class="language-cpp">// Typdefinition 2
typedef unsigned long long bitboard_t;
</code></pre>
<pre><code class="language-cpp">// Helper
inline int square_is_ok(int square)
{
  return square &gt;= 0 &amp;&amp; square &lt;= 63;
}
</code></pre>
<pre><code class="language-cpp">// Casting 1
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return 1ULL &lt;&lt; static_cast&lt;bitboard_t&gt;(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 2
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return static_cast&lt;bitboard_t&gt;(1) &lt;&lt; static_cast&lt;bitboard_t&gt;(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 3
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return bitboard_t(1) &lt;&lt; bitboard_t(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 3
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return (bitboard_t) 1 &lt;&lt; (bitboard_t) square;
}
</code></pre>
<p><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>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269701/richtiges-casten-von-unsigned-long-long</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 00:19:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269701.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Jun 2010 07:16:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Richtiges Casten von unsigned long long on Wed, 30 Jun 2010 07:18:10 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Verwende unsigned 64 Bit Integers und suche nach der korrekten Typdefinition und dem korrekten Casting:</p>
<pre><code class="language-cpp">// Typdefinition 1
typedef unsigned __int64 bitboard_tt;
</code></pre>
<pre><code class="language-cpp">// Typdefinition 2
typedef unsigned long long bitboard_t;
</code></pre>
<pre><code class="language-cpp">// Helper
inline int square_is_ok(int square)
{
  return square &gt;= 0 &amp;&amp; square &lt;= 63;
}
</code></pre>
<pre><code class="language-cpp">// Casting 1
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return 1ULL &lt;&lt; static_cast&lt;bitboard_t&gt;(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 2
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return static_cast&lt;bitboard_t&gt;(1) &lt;&lt; static_cast&lt;bitboard_t&gt;(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 3
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return bitboard_t(1) &lt;&lt; bitboard_t(square);
}
</code></pre>
<pre><code class="language-cpp">// Casting 3
inline bitboard_t square_to_bitboard(int square)
{
  assert(square_is_ok(square));
  return (bitboard_t) 1 &lt;&lt; (bitboard_t) square;
}
</code></pre>
<p><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>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919226</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Wed, 30 Jun 2010 07:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiges Casten von unsigned long long on Wed, 30 Jun 2010 08:09:25 GMT]]></title><description><![CDATA[<p>Die Frage ist auch vom verwendeten Compiler abhängig.</p>
<p>Der Typ __int64 gilt nur unter Windows. Falls es portabel sein soll, so ist sicherlich die zweite Methode am besten.</p>
<p><em>long long int</em> wird jedoch erst ab MSVC7 unterstützt. Oder du verwendest den GCC der nimmt diesen Typ problemlos.</p>
<p>In der Standardlibrary <em>stdint.h</em> ist außerdem der Typ <strong>uint64_t</strong> definiert. Probiere den mal aus der ist Bestandteil von C99. Fall die Library nicht bei MSVC6 dabei ist, so kann sie auch nachrüsten.</p>
<p>Gruß<br />
trooper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919254</guid><dc:creator><![CDATA[trooper]]></dc:creator><pubDate>Wed, 30 Jun 2010 08:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiges Casten von unsigned long long on Wed, 30 Jun 2010 08:29:26 GMT]]></title><description><![CDATA[<p>trooper schrieb:</p>
<blockquote>
<p><em>long long int</em> wird jedoch erst ab MSVC7 unterstützt.</p>
</blockquote>
<p>Ich hoffe doch mal, dass keiner so wahnsinnig ist und heute noch ne ältere Version verwendet <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919272</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 30 Jun 2010 08:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiges Casten von unsigned long long on Wed, 30 Jun 2010 08:54:50 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Ich hoffe doch mal, dass keiner so wahnsinnig ist und heute noch ne ältere Version verwendet <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="😮"
    /></p>
</blockquote>
<p>Du wärst erstaunt. er. Natürlich will das eigentlich keiner, aber wenn du ne alte Codebase hast, die neuere Compiler überhaupt nicht mehr fressen, ist es schwer, dem Chef klar zu machen, dass das ganze ein großer Haufen Mist ist der schnellstmöglich entsorgt und durch etwas brauchbares ersetzt gehört - das kostet nämlich Zeit (und Zeit ist Geld).</p>
<p>Ist aber in diesem Fall auch nebensächlich, stdint.h kann MSVC nämlich bis mindestens 2008 nicht (2010 hatte ich noch nicht unter den Fingern). Es gibt ein <a href="http://code.google.com/p/msinttypes/" rel="nofollow">Projekt</a>, dass die damit verbundenen Header nachbaut, aber wenn man sich davon nicht abhängig machen will, muss man das von Hand nachcoden. Nicht, dass es besonders schwer wäre:</p>
<pre><code class="language-cpp">#ifdef _MSC_VER
namespace util {
  typedef __int8 int8_t;
  typedef unsigned __int8_t int8_t;

  // ...
}
#else
#include &lt;tr1/cstdint&gt;

namespace util {
  using ::std::tr1::int8_t;
  using ::std::tr1::uint8_t;
  // ...
}
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1919286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919286</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 30 Jun 2010 08:54:50 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiges Casten von unsigned long long on Wed, 30 Jun 2010 13:05:13 GMT]]></title><description><![CDATA[<p>Afaik liefert boost mit dem <a href="http://www.boost.org/doc/libs/1_42_0/boost/cstdint.hpp" rel="nofollow">cstdint.hpp</a> Header eine recht weitreichende Abdeckung der ganzen cstdint-Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919439</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 30 Jun 2010 13:05:13 GMT</pubDate></item></channel></rss>