42 como unsigned int está bien definido como "42U".Cómo escribir un literal int corto sin signo?
unsigned int foo = 42U; // yeah!
¿Cómo puedo escribir "23", por lo que está claro es un entero corto sin signo?
unsigned short bar = 23; // booh! not clear!
edición para que el significado de la cuestión es más claro:
template <class T>
void doSomething(T) {
std::cout << "unknown type" << std::endl;
}
template<>
void doSomething(unsigned int) {
std::cout << "unsigned int" << std::endl;
}
template<>
void doSomething(unsigned short) {
std::cout << "unsigned short" << std::endl;
}
int main(int argc, char* argv[])
{
doSomething(42U);
doSomething((unsigned short)23); // no other option than a cast?
return EXIT_SUCCESS;
}
declarar un ' const unsigned short 'object con un nombre apropiado y luego usar eso en lugar del 23. Todavía no ayuda a afirmar explícitamente que 23 está destinado a ser sin signo corto, pero al menos solo necesita verificar esa declaración para asegurar la corrección . En cualquier otro lugar usará la constante, por lo que el significado será claro. –
@Richard Corden: se usa cientos de veces como valores de entrada y da como resultado pruebas unitarias, por lo tanto cuanto más corto, mejor ... U para unsigned int es conveniente, pero los cortos (unsigned short) o const short object son exasperantes . – moala
Está preguntando cómo declarar un literal corto sin firmar. Si buscara esa pregunta, habría encontrado su respuesta. Como se ha dicho, no puedes. –