¿Qué puedo hacer (programáticamente) para deshacerme de la advertencia?g ++: advertencia: la constante entera es demasiado grande para el tipo 'largo'
...
unsigned long long v=(unsigned long long)0xffffeeeeddddcccc;
...
g++ main.cpp -o main
main.cpp:6: warning: integer constant is too large for ‘long’ type
pero cuando ejecuto el programa todo está bien como se esperaba:
./main
sizeof(unsigned long long)==8
value of v==0xffffeeeeddddcccc
entorno utilizado: 32 bits
- Ubuntu-Kármico
- g ++ versión: v4.4.1
EDITAR: aquí es la completa y compilable main.cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main(void) {
unsigned long long v=(unsigned long long)0xffffeeeeddddcccc;
const unsigned v_size = sizeof(unsigned long long);
cout << "sizeof(unsigned long long)==" << v_size << endl;
cout << "value of v==0x" << setw(v_size) << setfill('0') << hex << v << endl;
return 0;
}
Nunca antes había visto esto 'ull'. ¿Podría darme una referencia? –
'ull' es una parte del nuevo estándar de C++. g ++ 4.4.1 admite este sufijo. –
Prefiero escribir el 'ULL' y otros sufijos en mayúsculas para que sean visualmente distintos. Con el 'u' no es una gran preocupación, pero con' l' o 'll' es demasiado fácil confundirlo con' 1'. – JaakkoK