42 come int unsigned è ben definito come "42U".Come scrivere un letterale int breve senza segno?
unsigned int foo = 42U; // yeah!
Come posso scrivere "23" in modo che sia chiaro che è un corto unsigned int?
unsigned short bar = 23; // booh! not clear!
EDIT in modo che il senso della domanda è più chiaro:
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;
}
dichiarare un ' const unsigned short 'object con un nome appropriato e quindi usa quello al posto del 23. Non ti aiuta ancora a dichiarare esplicitamente che 23 è inteso per essere unsigned short, ma almeno devi solo controllare quella dichiarazione per assicurarti la correttezza . Ovunque altrimenti userà la costante e quindi il significato sarà chiaro. –
@Richard Corden: è utilizzabile centinaia di volte come valori di input e risulta nei test unitari, quindi più breve è, meglio è ... U per unsigned int è conveniente, ma i cast (unsigned short) o const short non firmati sono esasperanti . – moala
Stai chiedendo come dichiarare un letterale corto senza segno. Se avessi cercato quella domanda avresti trovato la tua risposta. Come è stato detto non puoi. –