Constexpr unsigned int * unsigned long wird nicht als unsigned long ausgewertet?C++

Programme in C++. Entwicklerforum
Anonymous
 Constexpr unsigned int * unsigned long wird nicht als unsigned long ausgewertet?

Post by Anonymous »

Die folgende Integer-Power-Funktion gibt 0 zurück, wenn das Ergebnis größer als 2^32 sein sollte, wenn das Basisargument ein vorzeichenloser Int ist, funktioniert aber einwandfrei, wenn der Typ des Basisarguments in einen vorzeichenlosen Long geändert wird. Warum? Compiler-Fehler?

Code: Select all

#include 
#include 
using uint  = uint32_t ;
using ulong = uint64_t ;

static constexpr ulong ipow(uint base, uint exp, ulong ans = 1) // Integer power
{
return exp < 1 ? ans : ipow(base*base, exp/2, (exp % 2) ? ans * base : ans) ;
}

int main ()
{
for (int i(2) ; i < 64 ; ++i)
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post